任意のフォントファイルを読み込んで利用するには?


 HSP3掲示板より『AddFontMemResourceExを使ってプライベートフォントを作成するには?』。特定のPCには通常含まれてない、インターネット上で配布されてる任意のフォントファイルをHSP製プログラムから読み込んで利用する、というものですな。


 大きく2つの手段(Win32 API関数)があるそうで、OSによって処理を振り分ける必要がでてきます。



  1. AddFontMemResourceEx関数 (Windows 2000/XP/Vista)

  2. AddFontResource関数 (Windows 98/Me/2000/XP/Vista)

 2番は、ぷまさんのHSP Help Centerに実例があります。
 こちらはフォントファイルとしてハードディスク上に存在してないとダメです。フォントファイルをいっしょに同封するか、フォントファイルをHSPのPACKFILE内に埋め込んでおくなら、一度吐き出す処理を用意しないといかんです。ただ、9x系OSから対応してます。


 1番は、9x系OSでは利用できないですが、HSPのPACKFILE内に埋め込んだフォントファイルをそのまま直で読み込んで利用できるので、実行ファイル単体配布が実現できます。



// PACKFILE内の任意のフォントファイルを利用 (HSP3)


; PACKFILEとしてパックする
#epack "(フォントファイル名)"

#include "gdi32.as"

; 簡易対応チェック
if varptr(AddFontMemResourceEx) {
dialog "Win 2k以降じゃないとダメなん"
stop
}

notesel buf
noteload "(フォントファイル名)"

AddFontMemResourceEx varptr(buf), strsize, 0, varptr(pcFonts)
hFont = stat ; フォントハンドル

font "(フォント名)", 60
mes "てすとー"

; フォントハンドルを解放 (onexit命令のジャンプ先で)
RemoveFontMemResourceEx hFont


☆注意!
・フォントファイルは著作物なので、利用する際は同封(配布)していいものか必ず確認を。
・漢字が含まれてるフォントファイルはものすごくサイズがでかいので注意。