IDWriteFontFace4
COM公式ドキュメント
フォントフェイスの種類、適切なファイル参照、およびフェイス識別データを格納します。(IDWriteFontFace4)
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
フォント全体でサポートされるすべてのグリフイメージフォーマットを取得します。(IDWriteFontFace4.GetGlyphImageFormats)
| glyphId | WORD | in | 対象グリフのインデックス(グリフID)である。 |
| pixelsPerEmFirst | DWORD | in | 判定範囲の下限となるem当たりピクセル数である。 |
| pixelsPerEmLast | DWORD | in | 判定範囲の上限となるem当たりピクセル数である。 |
| glyphImageFormats | DWRITE_GLYPH_IMAGE_FORMATS* | out | そのグリフが持つ画像形式の組み合わせを受け取るDWRITE_GLYPH_IMAGE_FORMATSフラグの出力先である。 |
戻り値
フォント全体でサポートされるすべてのグリフイメージフォーマットを返します。
フォント全体でサポートされるすべてのグリフイメージフォーマットを取得します。(IDWriteFontFace4.GetGlyphImageFormats)
戻り値
フォント全体でサポートされるすべてのグリフイメージフォーマットを返します。
指定したイメージフォーマットに基づいて、グリフデータへのポインターを取得します。
| glyphId | WORD | in | イメージデータを取得する対象グリフの ID。 |
| pixelsPerEm | DWORD | in | 要求する em あたりのピクセル数。 |
| glyphImageFormat | DWRITE_GLYPH_IMAGE_FORMATS | in | フォントでサポートされるフォーマットを指定します。 |
| glyphData | DWRITE_GLYPH_IMAGE_DATA* | out | 戻り時にグリフのデータを格納します。 |
| glyphDataContext | void** | out |
戻り値
解説(Remarks)
データが空でない場合、処理が完了したら glyphDataContext を ReleaseGlyphImageData で解放する必要があります。これは IDWriteFontFileStream::ReadFileFragment および IDWriteFontFileStream::ReleaseFileFragment と同様です。 データポインターは、IDWriteFontFace が存在し、かつ ReleaseGlyphImageData が呼び出されていない限り有効です。
DWRITE_GLYPH_IMAGE_DATA::uniqueDataId はキャッシュ目的で有用です。これにより、同じリソースが複数回返される場合に、データを再度解析または展開する必要なく、既存のリソースを素早く取得できます。
この関数は SVG またはラスターデータのみを返します。TrueType/CFF/COLR データを要求すると DWRITE_E_INVALIDARG が返されます。それらは代わりに DrawGlyphRun で描画するか、GetGlyphOutline で照会する必要があります。 フォーマットは正確に 1 つだけ要求できます。そうでない場合、関数は DWRITE_E_INVALIDARG を返します。 グリフがそのフォーマットを持たない場合、呼び出しはエラーにはなりませんが、関数は空のデータを返します。
ReadGlyphData から取得したテーブルデータを解放します。
| glyphDataContext | void* | inout | ReadGlyphData から得られる不透明なコンテキスト。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteFontFace4 "{27F2A904-4EB8-441D-9678-0563F53E3E2F}" #usecom global IDWriteFontFace4 IID_IDWriteFontFace4 "{}" #comfunc global IDWriteFontFace4_GetGlyphImageFormats 49 int,int,int,var #comfunc global IDWriteFontFace4_GetGlyphImageFormats 50 #comfunc global IDWriteFontFace4_GetGlyphImageData 51 int,int,int,var,sptr #comfunc global IDWriteFontFace4_ReleaseGlyphImageData 52 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteFontFace4 "{27F2A904-4EB8-441D-9678-0563F53E3E2F}" #usecom global IDWriteFontFace4 IID_IDWriteFontFace4 "{}" #comfunc global IDWriteFontFace4_GetGlyphImageFormats 49 int,int,int,sptr #comfunc global IDWriteFontFace4_GetGlyphImageFormats 50 #comfunc global IDWriteFontFace4_GetGlyphImageData 51 int,int,int,sptr,sptr #comfunc global IDWriteFontFace4_ReleaseGlyphImageData 52 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。