IDWriteFontResource
COM公式ドキュメント
フォントリソースの軸情報を提供し、特定のフォントフェイスインスタンスを作成するために使用されます。
メソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
リソースのフォントファイルを取得します。
| fontFile | IDWriteFontFile** | out | IDWriteFontFile インターフェースへのポインターのアドレス。正常に完了すると、この関数はポインターをフォントファイルオブジェクトに設定します。 |
戻り値
フォントファイル内におけるフォントフェイスの 0 から始まるインデックスを取得します。
戻り値
型: UINT32
フォントファイル内におけるフォントフェイスの 0 から始まるインデックス。
フォントリソースがサポートする軸の数を取得します。
戻り値
型: UINT32
フォントフェイスによって定義された軸の数。
フォントリソースがサポートするすべての軸の既定値を取得します。
| fontAxisValues | DWRITE_FONT_AXIS_VALUE* | out | GetDefaultFontAxisValues がフォント軸値のリストを書き込む DWRITE_FONT_AXIS_VALUE 構造体の配列へのポインター。この配列のサイズと有効期間の管理は呼び出し側の責任です。割り当てる配列のサイズを決定するには GetFontAxisCount を呼び出します。 |
| fontAxisValueCount | DWORD | in | fontAxisValues が指すメモリブロックに書き込むフォント軸値の最大数。 |
戻り値
型: HRESULT
関数が成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコード を返します。
| 戻り値 | 説明 |
|---|---|
| E_INVALIDARG | fontAxisValueCount が GetFontAxisCount の返す値と一致しません。 |
解説(Remarks)
フォントリソースによって既定値が異なる場合があります。OpenType 1.8 フォントでは、これらの値は STAT テーブルと fvar テーブルから取得されます。STAT テーブルを持たない古いフォントでは、weight-width-slant-italic が OS/2 テーブルから読み取られます。
各軸の値の範囲を取得します。
| fontAxisRanges | DWRITE_FONT_AXIS_RANGE* | out | GetFontAxisRanges がフォント軸値の範囲のリストを書き込む DWRITE_FONT_AXIS_RANGE 構造体の配列へのポインター。この配列のサイズと有効期間の管理は呼び出し側の責任です。割り当てる配列のサイズを決定するには GetFontAxisCount を呼び出します。 |
| fontAxisRangeCount | DWORD | in | fontAxisRanges が指すメモリブロックに書き込むフォント軸値範囲の最大数。 |
戻り値
型: HRESULT
関数が成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコード を返します。
| 戻り値 | 説明 |
|---|---|
| E_INVALIDARG | fontAxisValueCount が GetFontAxisCount の返す値と一致しません。 |
解説(Remarks)
可変でない軸は空の範囲を持ちます (minValue == maxValue)。
指定した軸を説明する属性 (フォント作成者がユーザーインターフェイスでその軸を非表示にすることを推奨しているかどうかなど) を取得します。
| axisIndex | DWORD | in | フォント軸。0 から GetFontAxisCount から 1 を引いた値まで。 |
戻り値
型: DWRITE_FONT_AXIS_ATTRIBUTES
指定した軸の属性。axisIndex がフォントの数を超えている場合は DWRITE_FONT_AXIS_ATTRIBUTES_NONE。
フォント軸のローカライズされた名前を取得します。
| axisIndex | DWORD | in | フォント軸。0 から GetFontAxisCount から 1 を引いた値まで。 |
| names | IDWriteLocalizedStrings** | out | IDWriteLocalizedStrings インターフェースへのポインターのアドレス。正常に完了すると、この関数はポインターを新しく作成されたローカライズ済み文字列オブジェクトに設定します。 |
戻り値
解説(Remarks)
フォント作成者が一部のフォント軸に名前を指定していない場合があります。その場合、ローカライズ済み文字列は空になります。
特定の軸の名前付き値の数を取得します。
| axisIndex | DWORD | in | フォント軸。0 から GetFontAxisCount から 1 を引いた値まで。 |
戻り値
型: UINT32
axisIndex で指定された軸の名前付き値の数。
フォント軸の特定の値のローカライズされた名前を取得します。
| axisIndex | DWORD | in | フォント軸。0 から GetFontAxisCount から 1 を引いた値まで。 |
| axisValueIndex | DWORD | in | 値のインデックス。0 から GetAxisValueNameCount から 1 を引いた値まで。 |
| fontAxisRange | DWRITE_FONT_AXIS_RANGE* | out | 名前付き値の範囲。 |
| names | IDWriteLocalizedStrings** | out | IDWriteLocalizedStrings インターフェースへのポインターのアドレス。正常に完了すると、この関数はポインターを新しく作成されたローカライズ済み文字列オブジェクトに設定します。 |
戻り値
解説(Remarks)
フォント作成者が一部のフォント軸値に名前を指定していない場合があります。その場合、ローカライズ済み文字列は空になります。範囲は minValue == maxValue となる単一の点になる場合があります。すべての範囲は axisValueIndex の昇順です。
このフォントフェイスのリソースが可変軸をサポートしているかどうかを判定します。(IDWriteFontResource::HasVariations)
戻り値
型: BOOL
フォントフェイスのリソースが可変軸をサポートしている場合は true。それ以外の場合は false。
特定の軸値を持つフォントフェイスインスタンスを作成します。
| fontSimulations | DWRITE_FONT_SIMULATIONS | in | アルゴリズムによる太字化および斜体化のためのフォントフェイスシミュレーションフラグ。 |
| fontAxisValues | DWRITE_FONT_AXIS_VALUE* | in | フォント軸値のリストを格納した配列へのポインター。配列のサイズ (要素数) は fontAxisValueCount 引数で示される値である必要があります。 |
| fontAxisValueCount | DWORD | in | fontAxisValues 配列に格納されているフォント軸値の数。 |
| fontFace | IDWriteFontFace5** | out | IDWriteFontFace5 インターフェースへのポインターのアドレス。正常に完了すると、この関数はポインターを新しく作成されたフォントフェイスオブジェクトに設定し、それ以外の場合はポインターを nullptr に設定します。 |
戻り値
型: HRESULT
関数が成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコード を返します。
| 戻り値 | 説明 |
|---|---|
| DWRITE_E_REMOTEFONT | フォントがローカルにありません。 |
解説(Remarks)
指定する軸値は、フォントが実際にサポートするすべての軸値のサブセットまたはスーパーセットであってもかまいません。指定されなかった軸は既定値を使用します。範囲を超えた値はクランプされ、可変でない軸は効果を持ちません。
特定の軸値を持つフォントフェイス参照を作成します。
| fontSimulations | DWRITE_FONT_SIMULATIONS | in | アルゴリズムによる太字化および斜体化のためのフォントフェイスシミュレーションフラグ。 |
| fontAxisValues | DWRITE_FONT_AXIS_VALUE* | in | フォント軸値のリストを格納した配列へのポインター。配列のサイズ (要素数) は fontAxisValueCount 引数で示される値である必要があります。 |
| fontAxisValueCount | DWORD | in | fontAxisValues 配列に格納されているフォント軸値の数。 |
| fontFaceReference | IDWriteFontFaceReference1** | out | IDWriteFontFaceReference1 インターフェースへのポインターのアドレス。正常に完了すると、この関数はポインターを新しく作成されたフォントフェイス参照オブジェクトに設定し、それ以外の場合はポインターを nullptr に設定します。 |
戻り値
解説(Remarks)
指定する軸値は、フォントが実際にサポートするすべての軸値のサブセットまたはスーパーセットであってもかまいません。指定されなかった軸は既定値を使用します。範囲を超えた値はクランプされ、可変でない軸は効果を持ちません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDWriteFontResource "{1F803A76-6871-48E8-987F-B975551C50F2}" #usecom global IDWriteFontResource IID_IDWriteFontResource "{}" #comfunc global IDWriteFontResource_GetFontFile 3 sptr #comfunc global IDWriteFontResource_GetFontFaceIndex 4 #comfunc global IDWriteFontResource_GetFontAxisCount 5 #comfunc global IDWriteFontResource_GetDefaultFontAxisValues 6 var,int #comfunc global IDWriteFontResource_GetFontAxisRanges 7 var,int #comfunc global IDWriteFontResource_GetFontAxisAttributes 8 int #comfunc global IDWriteFontResource_GetAxisNames 9 int,sptr #comfunc global IDWriteFontResource_GetAxisValueNameCount 10 int #comfunc global IDWriteFontResource_GetAxisValueNames 11 int,int,var,sptr #comfunc global IDWriteFontResource_HasVariations 12 #comfunc global IDWriteFontResource_CreateFontFace 13 int,var,int,sptr #comfunc global IDWriteFontResource_CreateFontFaceReference 14 int,var,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IDWriteFontResource "{1F803A76-6871-48E8-987F-B975551C50F2}" #usecom global IDWriteFontResource IID_IDWriteFontResource "{}" #comfunc global IDWriteFontResource_GetFontFile 3 sptr #comfunc global IDWriteFontResource_GetFontFaceIndex 4 #comfunc global IDWriteFontResource_GetFontAxisCount 5 #comfunc global IDWriteFontResource_GetDefaultFontAxisValues 6 sptr,int #comfunc global IDWriteFontResource_GetFontAxisRanges 7 sptr,int #comfunc global IDWriteFontResource_GetFontAxisAttributes 8 int #comfunc global IDWriteFontResource_GetAxisNames 9 int,sptr #comfunc global IDWriteFontResource_GetAxisValueNameCount 10 int #comfunc global IDWriteFontResource_GetAxisValueNames 11 int,int,sptr,sptr #comfunc global IDWriteFontResource_HasVariations 12 #comfunc global IDWriteFontResource_CreateFontFace 13 int,sptr,int,sptr #comfunc global IDWriteFontResource_CreateFontFaceReference 14 int,sptr,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。