PFN_DrvLoadFontFile
コールバックシグネチャ
UINT_PTR PFN_DrvLoadFontFile(
DWORD param0,
UINT_PTR* param1,
void** param2,
DWORD* param3,
DESIGNVECTOR* param4,
DWORD param5,
DWORD param6
);パラメーター
| フィールド | 型 |
|---|---|
| param0 | DWORD |
| param1 | UINT_PTR* |
| param2 | void** |
| param3 | DWORD* |
| param4 | DESIGNVECTOR* |
| param5 | DWORD |
| param6 | DWORD |
公式ドキュメント
DrvLoadFontFile 関数は、フォントファイルの読み込みとマッピングに関する情報を GDI から受け取ります。
戻り値
処理が成功した場合は、そのフォントを一意に識別するドライバー定義の値へのポインターを返します。ドライバーは以降、このポインターを DrvQueryFont、DrvQueryFontFile、DrvQueryFontTree といった関数の入力パラメーターとして受け取ります。エラーが発生した場合、この関数は HFF_INVALID を返します。
解説(Remarks)
フォントドライバーは DrvLoadFontFile 関数を提供する必要があります。この関数の目的は、フォントに関連付けられたファイルが読み込まれてマッピングされることを、フォントドライバーが通知として受け取れるようにすることです。ドライバーは、入力引数を後で使用するために保存しておくことができます。
フォントファイルの読み込みとマッピングには、EngMapFontFileFD の呼び出しが伴います。アプリケーションが AddFontResource または AddFontResourceEx(Windows SDK のドキュメントで説明されています)を呼び出すと、GDI は EngMapFontFileFD を呼び出し、続いて DrvLoadFontFile を呼び出します。DrvLoadFontFile 関数の ppvView パラメーターと pcjView パラメーターは、EngMapFontFileFD が返した各ファイルのマッピングの位置とサイズを示します。
GDI は、DrvLoadFontFile から制御が戻るとファイルのマッピングを解除します。GDI からの後続の呼び出しに応じて後でファイルを再度マッピングする必要がある場合、ドライバーは cFiles パラメーターと piFile パラメーターを保存してあれば、自分で EngMapFontFileFD を呼び出すことができます。
GDI フォントエンジンがフォントドライバーの DrvLoadFontFile DDI を呼び出すとき、ulFastCheckSum パラメーターにそのフォントのチェックサムを渡します。このパラメーターが 0 以外で、対象のフォントがキャッシュ済みの場合、DrvLoadFontFile は EngFntCacheLookUp を呼び出してフォントデータへのポインターを取得できます。フォントドライバーはフォントデータへのポインターを取得した後、そのフォントデータを読み込むことができます。フォントがキャッシュされていない場合、フォントドライバーは、まず EngFntCacheAlloc を呼び出してフォントキャッシュ用のメモリを割り当て、そのメモリにフォントデータを書き込むことでフォントをキャッシュできます。フォントデータの読み取りまたは書き込みでエラーが発生した場合、フォントドライバーは EngFntCacheFault を呼び出して GDI フォントエンジンに通知できます。
GDI フォントエンジンが ulFastCheckSum パラメーターに 0 を渡して DrvLoadFontFile を呼び出した場合、それは GDI フォントエンジンが動作していないことを意味し、フォントドライバーは何も行う必要はありません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)