IDWriteFactory5
COM公式ドキュメント
すべての DirectWrite オブジェクトのルートとなるファクトリインターフェイスです。(IDWriteFactory5)
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
フォントフェイス参照を追加してカスタムフォントセットを作成するための、空のフォントセットビルダーを作成します。(IDWriteFactory5.CreateFontSetBuilder)
| fontSetBuilder | IDWriteFontSetBuilder1** | out | 新しく作成されたフォントセットビルダーオブジェクトを保持します。失敗した場合は NULL になります。 |
戻り値
Type: HRESULT
このメソッドは、成功またはエラーを示す HRESULT を返します。
メモリ内フォントへのフォントファイル参照を作成するために使用できるローダーオブジェクトを作成します。ローダーの登録および登録解除は、呼び出し側が行う必要があります。
| newLoader | IDWriteInMemoryFontFileLoader** | out | 新しく作成されたローダーオブジェクトへのポインターを受け取ります。 |
戻り値
Type: HRESULT
このメソッドは、成功またはエラーを示す HRESULT を返します。
HTTP または HTTPS の URL からフォントファイル参照を作成できるリモートフォントファイルローダーを作成します。ローダーの登録および登録解除は、呼び出し側が行う必要があります。
| referrerUrl | LPWSTR | inoptional | HTTP リクエストに使用する参照元 (referrer) URL です。省略可能です。 |
| extraHeaders | LPWSTR | inoptional | HTTP リクエストに含める追加のヘッダーフィールドです。省略可能です。各ヘッダーフィールドは、RFC 2616 で規定されているとおり、名前の後にコロン (":") とフィールド値を続けたもので構成されます。複数のヘッダーフィールドは改行で区切ることができます。 |
| newLoader | IDWriteRemoteFontFileLoader** | out | 新しく作成されたローダーオブジェクトへのポインターを受け取ります。 |
戻り値
Type: HRESULT
このメソッドは、成功またはエラーを示す HRESULT を返します。
AnalyzeContainerType メソッドは、指定されたファイルデータを解析し、既知のフォントコンテナー形式 (WOFF や WOFF2 など) であるかどうかを判定します。
| fileData | void* | in | 解析対象のファイルデータへのポインターです。 |
| fileDataSize | DWORD | in | fileData で渡すバッファーのサイズです。 |
戻り値
Type: DWRITE_CONTAINER_TYPE
認識できた場合はコンテナーの種類を返します。非圧縮のフォントファイルを含むその他すべてのファイルに対しては、DWRITE_CONTAINER_TYPE_UNKOWNN が返されます。
UnpackFontFile メソッドは、コンテナーファイル (WOFF または WOFF2) からフォントデータを展開し、展開したフォントデータをフォントファイルストリームの形式で返します。
| containerType | DWRITE_CONTAINER_TYPE | in | AnalyzeContainerType が返したコンテナーの種類です。 |
| fileData | void* | in | 圧縮されたデータへのポインターです。 |
| fileDataSize | DWORD | in | 圧縮されたデータのサイズ (バイト単位) です。 |
| unpackedFontStream | IDWriteFontFileStream** | out | 非圧縮データを含む、新しく作成されたフォントファイルストリームへのポインターを受け取ります。 |
戻り値
Type: HRESULT
標準的な HRESULT エラーコードです。コンテナーの種類が DWRITE_CONTAINER_TYPE_UNKNOWN の場合、戻り値は E_INVALIDARG になります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteFactory5 "{958DB99A-BE2A-4F09-AF7D-65189803D1D3}"
#usecom global IDWriteFactory5 IID_IDWriteFactory5 "{}"
#comfunc global IDWriteFactory5_CreateFontSetBuilder 43 sptr
#comfunc global IDWriteFactory5_CreateInMemoryFontFileLoader 44 sptr
#comfunc global IDWriteFactory5_CreateHttpFontFileLoader 45 wstr,wstr,sptr
#comfunc global IDWriteFactory5_AnalyzeContainerType 46 sptr,int
#comfunc global IDWriteFactory5_UnpackFontFile 47 int,sptr,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。