アーカイブ内のフォントデータの読み込み
微妙に詰まったので記事る。
DXアーカイブ内に格納したTTFファイルを読んで、DXライブラリに登録するまでのコード。
// arc.dxa内にフォントファイル(font.ttf)があるとする int font_handle; void FontLoad() { int FONT_SIZE = 32; const char* filename = "arc/font.ttf"; // ファイルのサイズを得る int FontFileSize = FileRead_size( filename ) ; // フォントファイルを開く int FontFileHandle = FileRead_open( filename ) ; // フォントデータ格納用のメモリ領域を確保 void *Buffer = malloc( FontFileSize ) ; // フォントファイルを丸ごとメモリに読み込む FileRead_read( Buffer, FontFileSize, FontFileHandle ) ; // AddFontMemResourceEx引数用 DWORD font_num = 0; // メモリに読み込んだフォントデータをシステムに追加 if ( AddFontMemResourceEx(Buffer,FontFileSize, NULL, &font_num) != 0 ){} else { // フォント読込エラー処理 MessageBox(NULL,"フォント読込失敗","",MB_OK); return; } // 作成したデータの識別番号を変数 FontHandle に保存する // パラメータは適当に設定 font_handle = CreateFontToHandle( "フォント名" , FONT_SIZE , 3 ,DX_FONTTYPE_ANTIALIASING_EDGE) ; }
こんな感じでフォントデータをアーカイブ内から読み込みができた。
DXライブラリ公式掲示板で具体的なやり方書いてなかった気がするのでメモ。
追記:
>インストールされたフォントを削除するには、RemoveFontMemResourceEx 関数を呼び出します。ただし、プロセスが終了する際、RemoveFontMemResource 関数を呼び出さなくても、システムはフォントをアンロードします。
だそうなので、解放処理はいいや。