IDWriteFactory6
COM公式ドキュメント
このインターフェイスは、すべての DirectWrite オブジェクトの生成元となるファクトリオブジェクトを表します。IDWriteFactory6 は、フォントおよびフォントリソースを扱うための新しい機能を追加します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ファイル内の特定のフォントインスタンスへの参照を作成します。
| fontFile | IDWriteFontFile* | in | フォントフェイスを表す、ユーザー指定のフォントファイルです。 |
| faceIndex | DWORD | in | フォントファイルが複数のフォントフェイスのコレクションを含む場合の、フォントフェイスの 0 から始まるインデックスです。フォントファイルが単一のフェイスのみを含む場合は、この値を 0 に設定します。 |
| fontSimulations | DWRITE_FONT_SIMULATIONS | in | アルゴリズムによる太字化および斜体化のためのフォントフェイスシミュレーションフラグです。 |
| fontAxisValues | DWRITE_FONT_AXIS_VALUE* | in | フォント軸値の一覧を含む配列へのポインターです。配列の大きさ(要素数)は fontAxisValueCount 引数で指定した数と一致している必要があります。 |
| fontAxisValueCount | DWORD | in | fontAxisValues 配列に含まれるフォント軸値の数です。 |
| fontFaceReference | IDWriteFontFaceReference1** | out | IDWriteFontFaceReference1 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたフォントフェイス参照オブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
フォントファイルとフェイスインデックスからフォントリソースを作成します。
| fontFile | IDWriteFontFile* | in | フォントフェイスを表す、ユーザー指定のフォントファイルです。 |
| faceIndex | DWORD | in | フォントファイルが複数のフォントフェイスのコレクションを含む場合の、フォントフェイスの 0 から始まるインデックスです。フォントファイルが単一のフェイスのみを含む場合は、この値を 0 に設定します。 |
| fontResource | IDWriteFontResource** | out | IDWriteFontResource インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたフォントリソースオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
システムフォントのセットを取得します。(IDWriteFactory6::GetSystemFontSet)
| includeDownloadableFonts | BOOL | in | ダウンロード可能なフォントを含めたい場合は true を指定します。ローカルにインストールされたフォントのみを対象とする場合は false を指定します。 |
| fontSet | IDWriteFontSet1** | out | IDWriteFontSet1 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターをフォントセットオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
ファミリーごとにグループ化されたフォントのコレクションを取得します。(IDWriteFactory6::GetSystemFontCollection)
| includeDownloadableFonts | BOOL | in | ダウンロード可能なフォントを含めたい場合は true を指定します。ローカルにインストールされたフォントのみを対象とする場合は false を指定します。 |
| fontFamilyModel | DWRITE_FONT_FAMILY_MODEL | in | コレクション内でファミリーをどのようにグループ化するかを指定します。 |
| fontCollection | IDWriteFontCollection2** | out | IDWriteFontCollection2 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたフォントコレクションオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
フォントセットから、ファミリーごとにグループ化されたフォントのコレクションを作成します。
| fontSet | IDWriteFontSet* | in | コレクションの構築に使用するフォントのセットです。 |
| fontFamilyModel | DWRITE_FONT_FAMILY_MODEL | in | コレクション内でファミリーをどのようにグループ化するかを指定します。 |
| fontCollection | IDWriteFontCollection2** | out | IDWriteFontCollection2 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたフォントコレクションオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
フォントインスタンスを追加してカスタムフォントセットを作成できる、空のフォントセットビルダーを作成します。
| fontSetBuilder | IDWriteFontSetBuilder2** | out | IDWriteFontSetBuilder2 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたフォントセットビルダーオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
テキストレイアウトに使用するテキストフォーマットオブジェクトを作成します。
| fontFamilyName | LPWSTR | in | コレクション内のフォントファミリーの名前です。 |
| fontCollection | IDWriteFontCollection* | inoptional | フォントコレクションです。システムフォントコレクションを指定するには nullptr を使用します。 |
| fontAxisValues | DWRITE_FONT_AXIS_VALUE* | in | フォント軸値の一覧を含む配列へのポインターです。配列の大きさ(要素数)は fontAxisValueCount 引数で指定した数と一致している必要があります。 |
| fontAxisValueCount | DWORD | in | fontAxisValues 配列に含まれるフォント軸値の数です。 |
| fontSize | FLOAT | in | DIP 単位で表したフォントの論理サイズです。 |
| localeName | LPWSTR | in | ロケール名です(例: "ja-JP"、"en-US"、"ar-EG")。 |
| textFormat | IDWriteTextFormat3** | out | IDWriteTextFormat3 インターフェイスへのポインターのアドレスです。処理が成功すると、この関数はポインターを新しく作成されたテキストフォーマットオブジェクトに設定します。それ以外の場合はポインターを nullptr に設定します。 |
戻り値
解説(Remarks)
fontCollection が nullptr の場合は、ダウンロード可能なフォントを含めず、タイポグラフィックファミリー名 (DWRITE_FONT_FAMILY_MODEL_TYPOGRAPHIC) でグループ化されたシステムフォントコレクションが使用されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteFactory6 "{F3744D80-21F7-42EB-B35D-995BC72FC223}" #usecom global IDWriteFactory6 IID_IDWriteFactory6 "{}" #comfunc global IDWriteFactory6_CreateFontFaceReference 48 sptr,int,int,var,int,sptr #comfunc global IDWriteFactory6_CreateFontResource 49 sptr,int,sptr #comfunc global IDWriteFactory6_GetSystemFontSet 50 int,sptr #comfunc global IDWriteFactory6_GetSystemFontCollection 51 int,int,sptr #comfunc global IDWriteFactory6_CreateFontCollectionFromFontSet 52 sptr,int,sptr #comfunc global IDWriteFactory6_CreateFontSetBuilder 53 sptr #comfunc global IDWriteFactory6_CreateTextFormat 54 wstr,sptr,var,int,float,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteFactory6 "{F3744D80-21F7-42EB-B35D-995BC72FC223}" #usecom global IDWriteFactory6 IID_IDWriteFactory6 "{}" #comfunc global IDWriteFactory6_CreateFontFaceReference 48 sptr,int,int,sptr,int,sptr #comfunc global IDWriteFactory6_CreateFontResource 49 sptr,int,sptr #comfunc global IDWriteFactory6_GetSystemFontSet 50 int,sptr #comfunc global IDWriteFactory6_GetSystemFontCollection 51 int,int,sptr #comfunc global IDWriteFactory6_CreateFontCollectionFromFontSet 52 sptr,int,sptr #comfunc global IDWriteFactory6_CreateFontSetBuilder 53 sptr #comfunc global IDWriteFactory6_CreateTextFormat 54 wstr,sptr,sptr,int,float,wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。