Win32 API 日本語リファレンス
ホームGraphics.DirectWrite › IDWriteFont1

IDWriteFont1

COM
IIDacd16696-8c14-4f5d-877e-fe3fc1d32738継承元IDWriteFont自前メソッド開始 vtbl14

公式ドキュメント

フォントコレクション内の物理フォントを表します。(IDWriteFont1)

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 14 void GetMetrics(DWRITE_FONT_METRICS1* fontMetrics)

フォントフェイスのデザイン単位および共通メトリックを取得します。これらのメトリックはフォントフェイス内のすべてのグリフに適用され、アプリケーションがレイアウト計算に使用します。(IDWriteFont1.GetMetrics)

fontMetricsDWRITE_FONT_METRICS1*out 現在のフォントフェイスのフォントメトリックを格納した DWRITE_FONT_METRICS1 構造体。このメソッドが返すメトリックはフォントのデザイン単位です。
vtbl 15 void GetPanose(DWRITE_PANOSE* panose)

フォントから PANOSE 値を取得します。この値はフォントの選択とマッチングに使用されます。

panoseDWRITE_PANOSE*out値を格納する DWRITE_PANOSE 構造体へのポインター。

解説(Remarks)

フォントに PANOSE 値がない場合、 それらは 'any' (0) に設定され、DirectWrite はそれらの値をシミュレートしません。

vtbl 16 HRESULT GetUnicodeRanges(DWORD maxRangeCount, DWRITE_UNICODE_RANGE* unicodeRanges, DWORD* actualRangeCount)

フォントがサポートする文字範囲の一覧を取得します。

maxRangeCountDWORDinクライアントから渡される文字範囲の 最大数。
unicodeRangesDWRITE_UNICODE_RANGE*outoptional文字範囲が格納される DWRITE_UNICODE_RANGE 構造体の配列。
actualRangeCountDWORD*out最大数に関係なく、実際の文字範囲の数への ポインター。

戻り値

Type: HRESULT

このメソッドは次のいずれかの値を返します。

戻り値 説明
S_OK
メソッドは正常に実行されました。
E_NOT_SUFFICIENT_BUFFER
バッファーが小さすぎます。actualRangeCountmaxRangeCount より大きくなっています。

解説(Remarks)

フォントがサポートする文字範囲の一覧は、 文字の選択、グリフの表示、効率的なフォント選択の検索 といったシナリオで役立ちます。GetUnicodeRanges は GDI の GetFontUnicodeRanges に似ていますが、16 ビットの UCS-2 だけでなく 完全な Unicode 範囲を返す点が異なります。

これらの範囲は OS/2::ulCodePageRange1 ではなく cmap から取得されます。

このメソッドが利用できない場合は、IDWriteFontFace::GetGlyphIndices メソッドを使用して欠落しているグリフを確認できます。このメソッドは、フォントに存在しないグリフに対して 0 のインデックスを返します。

フォントフォールバックのように、単一の文字または連続する一連の単一文字を確認する必要がある場合は、IDWriteFont::HasCharacter メソッドの方が簡単なことが多いです。

vtbl 17 BOOL IsMonospacedFont()

フォントが等幅かどうか、つまり文字がすべて同じ固定ピッチ幅(非プロポーショナル)であるかどうかを判定します。

戻り値

Type: BOOL

フォントが等幅の場合は true を、そうでない場合は false を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDWriteFont1 "{ACD16696-8C14-4F5D-877E-FE3FC1D32738}"
#usecom global IDWriteFont1 IID_IDWriteFont1 "{}"
#comfunc global IDWriteFont1_GetMetrics        14 var
#comfunc global IDWriteFont1_GetPanose         15 var
#comfunc global IDWriteFont1_GetUnicodeRanges  16 int,var,var
#comfunc global IDWriteFont1_IsMonospacedFont  17
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。