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

IDWriteFactory

COM
IIDb859ee5a-d838-4b5b-a2e8-1adc7d93db48継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

以降のすべての DirectWrite オブジェクトを作成するために使用します。このインターフェイスは、すべての DirectWrite オブジェクトのルートとなるファクトリインターフェイスです。

解説(Remarks)

IDWriteFactory オブジェクトは、DWriteCreateFactory 関数を使用して作成します。


if (SUCCEEDED(hr))
{
    hr = DWriteCreateFactory(
        DWRITE_FACTORY_TYPE_SHARED,
        __uuidof(IDWriteFactory),
        reinterpret_cast<IUnknown**>(&pDWriteFactory_)
        );
}

IDWriteFactory オブジェクトは、フォントローダーの登録やキャッシュされたフォントデータといった状態情報を保持します。この状態は共有することも分離することもできます。ほとんどのアプリケーションではメモリを節約できるため、共有が推奨されます。ただし、一部のオブジェクトに対して別個の状態を持たせたい場合には、分離が有用なことがあります。

メソッド 21

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

vtbl 3 HRESULT GetSystemFontCollection(IDWriteFontCollection** fontCollection, BOOL checkForUpdates)

インストールされているフォントの集合を表すオブジェクトを取得します。

fontCollectionIDWriteFontCollection**outこのメソッドが返るとき、システムフォントコレクションオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。
checkForUpdatesBOOLinこのパラメーターが 0 以外の場合、関数はインストールされているフォントの集合に対する変更を即座にチェックします。このパラメーターが FALSE の場合でも、フォントキャッシュサービスが実行されていれば変更は検出されますが、多少の遅延が生じることがあります。たとえば、アプリケーション自身がフォントをインストールした直後で、そのフォントがフォントコレクションに含まれていることを確実にしたい場合には、TRUE を指定するとよいでしょう。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT CreateCustomFontCollection(IDWriteFontCollectionLoader* collectionLoader, void* collectionKey, DWORD collectionKeySize, IDWriteFontCollection** fontCollection)

カスタムフォントコレクションローダーを使用してフォントコレクションを作成します。

collectionLoaderIDWriteFontCollectionLoader*inアプリケーション定義のフォントコレクションローダーです。事前に RegisterFontCollectionLoader を使用して登録されている必要があります。
collectionKeyvoid*inフォントファイルのコレクションを識別するためにローダーが使用するキーです。このキー用に確保するバッファーは、少なくとも collectionKeySize のサイズが必要です。
collectionKeySizeDWORDinコレクションキーのサイズ(バイト単位)です。
fontCollectionIDWriteFontCollection**outメソッドが成功した場合、システムフォントコレクションオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT RegisterFontCollectionLoader(IDWriteFontCollectionLoader* fontCollectionLoader)

カスタムフォントコレクションローダーをファクトリオブジェクトに登録します。

fontCollectionLoaderIDWriteFontCollectionLoader*in登録する IDWriteFontCollectionLoader オブジェクトへのポインターです。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この関数はフォントコレクションローダーを DirectWrite に登録します。フォントコレクションローダーインターフェイスはシングルトンオブジェクトとして実装する必要があり、特定の種類のキーが与えられたときに、フォントコレクション内のフォントファイルを列挙する処理を担います。特定のインスタンスは一度だけ登録できます。以降の登録の試みはエラーを返し、すでに登録済みであることを示します。フォントファイルローダーの実装は、コンストラクター内で自身を DirectWrite に登録してはならず、デストラクター内で自身の登録を解除してもなりません。登録操作と登録解除操作は、それぞれオブジェクトの参照カウントを増加および減少させるためです。代わりに、フォントファイルローダーの DirectWrite への登録および登録解除は、フォントファイルローダーの実装の外部で行うべきです。

vtbl 6 HRESULT UnregisterFontCollectionLoader(IDWriteFontCollectionLoader* fontCollectionLoader)

以前に RegisterFontCollectionLoader を使用して登録されたカスタムフォントコレクションローダーの登録を解除します。

fontCollectionLoaderIDWriteFontCollectionLoader*in登録を解除する IDWriteFontCollectionLoader オブジェクトへのポインターです。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT CreateFontFileReference(LPWSTR filePath, FILETIME* lastWriteTime, IDWriteFontFile** fontFile)

ローカルのフォントファイルからフォントファイル参照オブジェクトを作成します。

filePathLPWSTRinフォントファイルの絶対パスを含む文字配列です。指定された filePath がディスク上の有効なファイルに対応していない場合、作成されたオブジェクトに対する以降の操作は失敗することがあります。
lastWriteTimeFILETIME*inoptional入力ファイルパスの最終更新日時です。このパラメーターを省略した場合、関数はフォントファイルにアクセスしてその最終書き込み時刻を取得します。余分なディスクアクセスを避けるため、この値を指定することが推奨されます。指定された lastWriteTime がディスク上のファイルと一致しない場合、作成されたオブジェクトに対する以降の操作は失敗することがあります。
fontFileIDWriteFontFile**outこのメソッドが返るとき、新しく作成されたフォントファイル参照オブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT CreateCustomFontFileReference(void* fontFileReferenceKey, DWORD fontFileReferenceKeySize, IDWriteFontFileLoader* fontFileLoader, IDWriteFontFile** fontFile)

アプリケーション固有のフォントファイルリソースへの参照を作成します。

fontFileReferenceKeyvoid*infontFileLoader の存続期間中、フォントファイルリソースを一意に識別するフォントファイル参照キーです。
fontFileReferenceKeySizeDWORDinフォントファイル参照キーのサイズ(バイト単位)です。
fontFileLoaderIDWriteFontFileLoader*infontFileReferenceKey によって識別されるファイルからデータを読み込むためにフォントシステムが使用するフォントファイルローダーです。
fontFileIDWriteFontFile**outこのメソッドが成功したとき、新しく作成されたフォントファイルオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この関数は、アプリケーションやドキュメントが、システムにインストールすることなくプライベートフォントを使用する必要がある場合のために提供されています。fontFileReferenceKey は、この呼び出しで使用される fontFileLoader のスコープ内でのみ一意であれば十分です。

vtbl 9 HRESULT CreateFontFace(DWRITE_FONT_FACE_TYPE fontFaceType, DWORD numberOfFiles, IDWriteFontFile** fontFiles, DWORD faceIndex, DWRITE_FONT_SIMULATIONS fontFaceSimulationFlags, IDWriteFontFace** fontFace)

フォントフェイスを表すオブジェクトを作成します。

fontFaceTypeDWRITE_FONT_FACE_TYPEinフォントフェイスのファイル形式の種類を示す値です。
numberOfFilesDWORDinフォントフェイスを表すために必要なフォントファイルの数(要素数)です。
fontFilesIDWriteFontFile**inフォントフェイスを表すフォントファイルオブジェクトです。IDWriteFontFace は入力されたフォントファイルオブジェクトへの参照を独自に保持するため、この呼び出しの後にそれらを解放してかまいません。
faceIndexDWORDinフォントファイルが複数のフォントフェイスのコレクションを含む場合における、フォントフェイスの 0 から始まるインデックスです。フォントファイルが単一のフェイスのみを含む場合、この値は 0 にする必要があります。
fontFaceSimulationFlagsDWRITE_FONT_SIMULATIONSinテキストをアルゴリズム的に太字または斜体にするためのフォントフェイスシミュレーションフラグのうち、現在のフォントフェイスに適用するものを示す値です(適用しない場合もあります)。
fontFaceIDWriteFontFace**outこのメソッドが返るとき、新しく作成されたフォントフェイスオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 10 HRESULT CreateRenderingParams(IDWriteRenderingParams** renderingParams)

プライマリモニターに対する既定の設定でレンダリングパラメーターオブジェクトを作成します。モニターごとにレンダリングパラメーターが異なる場合があります。詳細については「How to Add Support for Multiple Monitors(複数モニターのサポートを追加する方法)」のトピックを参照してください。

renderingParamsIDWriteRenderingParams**outこのメソッドが返るとき、新しく作成されたレンダリングパラメーターオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

標準的な HRESULT エラーコードです。

vtbl 11 HRESULT CreateMonitorRenderingParams(HMONITOR monitor, IDWriteRenderingParams** renderingParams)

指定したモニターに対する既定の設定でレンダリングパラメーターオブジェクトを作成します。ほとんどの場合、これがレンダリングパラメーターオブジェクトを作成する推奨方法です。

monitorHMONITORin指定したモニターのハンドルです。
renderingParamsIDWriteRenderingParams**outこのメソッドが返るとき、このメソッドによって作成されたレンダリングパラメーターオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 12 HRESULT CreateCustomRenderingParams(FLOAT gamma, FLOAT enhancedContrast, FLOAT clearTypeLevel, DWRITE_PIXEL_GEOMETRY pixelGeometry, DWRITE_RENDERING_MODE renderingMode, IDWriteRenderingParams** renderingParams)

指定したプロパティでレンダリングパラメーターオブジェクトを作成します。(IDWriteFactory.CreateCustomRenderingParams)

gammaFLOATin新しいレンダリングパラメーターオブジェクトに設定するガンマレベルです。
enhancedContrastFLOATin新しいレンダリングパラメーターオブジェクトに設定する拡張コントラストレベルです。
clearTypeLevelFLOATin新しいレンダリングパラメーターオブジェクトに設定する ClearType レベルです。
pixelGeometryDWRITE_PIXEL_GEOMETRYinテキストのレンダリングを目的として想定される、デバイスピクセルの内部構造(すなわち、赤・緑・青の各色成分の物理的な配置)を表します。
renderingModeDWRITE_RENDERING_MODEinグリフをレンダリングする方式(たとえば ClearType ナチュラル品質)を表す値です。
renderingParamsIDWriteRenderingParams**outこのメソッドが返るとき、新しく作成されたレンダリングパラメーターオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 13 HRESULT RegisterFontFileLoader(IDWriteFontFileLoader* fontFileLoader)

フォントファイルローダーを DirectWrite に登録します。

fontFileLoaderIDWriteFontFileLoader*in特定のファイルリソース種別に対応する IDWriteFontFileLoader オブジェクトへのポインターです。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この関数はフォントファイルローダーを DirectWrite に登録します。フォントファイルローダーインターフェイスはシングルトンオブジェクトとして実装する必要があり、キーから特定の種類のフォントファイルリソースを読み込む処理を担います。特定のインスタンスは一度だけ登録できます。以降の登録の試みはエラーを返し、すでに登録済みであることを示します。フォントファイルローダーの実装は、コンストラクター内で自身を DirectWrite に登録してはならず、デストラクター内で自身の登録を解除してもなりません。登録操作と登録解除操作は、それぞれオブジェクトの参照カウントを増加および減少させるためです。代わりに、フォントファイルローダーの DirectWrite への登録および登録解除は、フォントファイルローダーの実装の外部で行うべきです。

vtbl 14 HRESULT UnregisterFontFileLoader(IDWriteFontFileLoader* fontFileLoader)

以前に RegisterFontFileLoader を使用して DirectWrite フォントシステムに登録されたフォントファイルローダーの登録を解除します。

fontFileLoaderIDWriteFontFileLoader*in以前に RegisterFontFileLoader を使用して DirectWrite フォントシステムに登録されたファイルローダーへのポインターです。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

この関数は、フォントファイルローダーのコールバックを DirectWrite フォントシステムから登録解除します。フォントファイルローダーインターフェイスはシングルトンオブジェクトとして実装する必要があります。フォントファイルローダーの実装は、コンストラクター内で自身を DirectWrite に登録してはならず、デストラクター内で自身の登録を解除してもなりません。登録操作と登録解除操作は、それぞれオブジェクトの参照カウントを増加および減少させるためです。代わりに、フォントファイルローダーの DirectWrite への登録および登録解除は、フォントファイルローダーの実装の外部で行うべきです。

vtbl 15 HRESULT CreateTextFormat(LPWSTR fontFamilyName, IDWriteFontCollection* fontCollection, DWRITE_FONT_WEIGHT fontWeight, DWRITE_FONT_STYLE fontStyle, DWRITE_FONT_STRETCH fontStretch, FLOAT fontSize, LPWSTR localeName, IDWriteTextFormat** textFormat)

テキストレイアウトに使用するテキストフォーマットオブジェクトを作成します。(IDWriteFactory.CreateTextFormat)

fontFamilyNameLPWSTRinフォントファミリーの名前を含む文字配列です。
fontCollectionIDWriteFontCollection*inoptionalフォントコレクションオブジェクトへのポインターです。NULL の場合、システムフォントコレクションを示します。
fontWeightDWRITE_FONT_WEIGHTinこのメソッドで作成されるテキストオブジェクトのフォントの太さ(ウェイト)を示す値です。
fontStyleDWRITE_FONT_STYLEinこのメソッドで作成されるテキストオブジェクトのフォントスタイルを示す値です。
fontStretchDWRITE_FONT_STRETCHinこのメソッドで作成されるテキストオブジェクトのフォントの伸縮(ストレッチ)を示す値です。
fontSizeFLOATinフォントの論理サイズ(DIP(「デバイス非依存ピクセル」)単位)です。1 DIP は 1/96 インチに相当します。
localeNameLPWSTRinロケール名を含む文字配列です。
textFormatIDWriteTextFormat**outこのメソッドが返るとき、新しく作成されたテキストフォーマットオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 16 HRESULT CreateTypography(IDWriteTypography** typography)

テキストレイアウトで使用するタイポグラフィオブジェクトを作成します。

typographyIDWriteTypography**outこのメソッドが返るとき、新しく作成されたタイポグラフィオブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT GetGdiInterop(IDWriteGdiInterop** gdiInterop)

GDI との相互運用に使用するオブジェクトを作成します。

gdiInteropIDWriteGdiInterop**outこのメソッドが返るとき、成功した場合は GDI 相互運用オブジェクトへのポインターのアドレスが格納されます。失敗した場合は NULL が格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 18 HRESULT CreateTextLayout(LPWSTR string, DWORD stringLength, IDWriteTextFormat* textFormat, FLOAT maxWidth, FLOAT maxHeight, IDWriteTextLayout** textLayout)

文字列、テキストフォーマット、および関連する制約を受け取り、完全に解析および整形された結果を表すオブジェクトを生成します。

stringLPWSTRin新しい IDWriteTextLayout オブジェクトを作成する元となる文字列を含む文字配列です。この配列の長さは stringLength でなければならず、埋め込みの NULL 文字を含むことができます。
stringLengthDWORDin文字列に含まれる文字数です。
textFormatIDWriteTextFormat*in文字列に適用するフォーマットを示すオブジェクトへのポインターです。
maxWidthFLOATinレイアウトボックスの幅です。
maxHeightFLOATinレイアウトボックスの高さです。
textLayoutIDWriteTextLayout**outこのメソッドが返るとき、生成されたテキストレイアウトオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 19 HRESULT CreateGdiCompatibleTextLayout(LPWSTR string, DWORD stringLength, IDWriteTextFormat* textFormat, FLOAT layoutWidth, FLOAT layoutHeight, FLOAT pixelsPerDip, DWRITE_MATRIX* transform, BOOL useGdiNatural, IDWriteTextLayout** textLayout)

文字列、フォーマット、および関連する制約を受け取り、特定の表示解像度と測定モードに合わせて整形された結果を表すオブジェクトを生成します。

stringLPWSTRin新しい IDWriteTextLayout オブジェクトを作成する元となる文字列を含む文字配列です。この配列の長さは stringLength でなければならず、埋め込みの NULL 文字を含むことができます。
stringLengthDWORDin文字列の長さ(文字数)です。
textFormatIDWriteTextFormat*in文字列に適用するテキストフォーマットオブジェクトです。
layoutWidthFLOATinレイアウトボックスの幅です。
layoutHeightFLOATinレイアウトボックスの高さです。
pixelsPerDipFLOATinDIP(デバイス非依存ピクセル)あたりの物理ピクセル数です。たとえば、96 DPI のデバイスにレンダリングする場合、pixelsPerDip は 1 です。120 DPI のデバイスにレンダリングする場合、pixelsPerDip は 1.25(120/96)です。
transformDWRITE_MATRIX*inoptionalグリフとその位置に適用される省略可能な変換です。この変換は、フォントサイズと DIP あたりのピクセル数によるスケーリングの後に適用されます。
useGdiNaturalBOOLinFALSE に設定すると、テキストレイアウトは GDI の 2 値(bi-level)テキストと同じメトリックを使用します。TRUE に設定すると、テキストレイアウトは CLEARTYPE_NATURAL_QUALITY で作成したフォントを使用して GDI が測定したテキストと同じメトリックを使用します。
textLayoutIDWriteTextLayout**outこのメソッドが返るとき、生成されたテキストレイアウトオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

生成されたテキストレイアウトは、意図した解像度でのみ使用すべきです。テキストのスケーラビリティが必要な場合は、代わりに CreateTextLayout を使用してください。

vtbl 20 HRESULT CreateEllipsisTrimmingSign(IDWriteTextFormat* textFormat, IDWriteInlineObject** trimmingSign)

省略記号(...)を省略のしるしとして使用する、トリミング用のインラインオブジェクトを作成します。

textFormatIDWriteTextFormat*inテキストレイアウトに使用する、CreateTextFormat で作成されたテキストフォーマットオブジェクトです。
trimmingSignIDWriteInlineObject**outこのメソッドが返るとき、このメソッドによって作成された省略(すなわち省略記号によるトリミング)のしるしへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

省略記号は、ベースフォント、スタイル、および各種効果を含むフォーマットの現在の設定を使用して作成されます。別の省略のしるしは、IDWriteInlineObject を実装することでアプリケーション側で作成できます。

vtbl 21 HRESULT CreateTextAnalyzer(IDWriteTextAnalyzer** textAnalyzer)

テキスト解析を実行するためのインターフェイスを返します。

textAnalyzerIDWriteTextAnalyzer**outこのメソッドが返るとき、新しく作成されたテキストアナライザーオブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 22 HRESULT CreateNumberSubstitution(DWRITE_NUMBER_SUBSTITUTION_METHOD substitutionMethod, LPWSTR localeName, BOOL ignoreUserOverride, IDWriteNumberSubstitution** numberSubstitution)

ロケール名、置換方法、およびユーザーによる上書きを無視するかどうか(無視する場合は、指定したカルチャに対する NLS の既定値を使用する)を示すフラグを使用して、数字置換オブジェクトを作成します。

substitutionMethodDWRITE_NUMBER_SUBSTITUTION_METHODin数字および関連する句読点に対して数字置換をどのように適用するかを指定する値です。
localeNameLPWSTRinnumberSubstitution オブジェクトで使用するロケールの名前です。
ignoreUserOverrideBOOLinユーザーによる上書きを無視するかどうかを示すブール値のフラグです。
numberSubstitutionIDWriteNumberSubstitution**outこのメソッドが返るとき、このメソッドによって作成された数字置換オブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 23 HRESULT CreateGlyphRunAnalysis(DWRITE_GLYPH_RUN* glyphRun, FLOAT pixelsPerDip, DWRITE_MATRIX* transform, DWRITE_RENDERING_MODE renderingMode, DWRITE_MEASURING_MODE measuringMode, FLOAT baselineOriginX, FLOAT baselineOriginY, IDWriteGlyphRunAnalysis** glyphRunAnalysis)

グリフランのレンダリングに使用される情報をカプセル化する、グリフラン解析オブジェクトを作成します。(IDWriteFactory.CreateGlyphRunAnalysis)

glyphRunDWRITE_GLYPH_RUN*inグリフランのプロパティ(フォントフェイス、送り幅(advance)など)を含む構造体です。
pixelsPerDipFLOATinDIP(デバイス非依存ピクセル)あたりの物理ピクセル数です。たとえば、96 DPI のビットマップにレンダリングする場合、pixelsPerDip は 1 です。120 DPI のビットマップにレンダリングする場合、pixelsPerDip は 1.25 です。
transformDWRITE_MATRIX*inoptionalグリフとその位置に適用される省略可能な変換です。この変換は、emSizepixelsPerDip によるスケーリングの後に適用されます。
renderingModeDWRITE_RENDERING_MODEinレンダリングモードを指定する値です。ラスターレンダリングモードのいずれか(すなわち、既定でもアウトラインでもないもの)でなければなりません。
measuringModeDWRITE_MEASURING_MODEinグリフに使用する測定モードを指定します。
baselineOriginXFLOATinベースライン原点の水平位置(X 座標)です(DIP 単位)。
baselineOriginYFLOATinベースライン原点の垂直位置(Y 座標)です(DIP 単位)。
glyphRunAnalysisIDWriteGlyphRunAnalysis**outこのメソッドが返るとき、新しく作成されたグリフラン解析オブジェクトへのポインターのアドレスが格納されます。

戻り値

Type: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

グリフラン解析オブジェクトには、すべてのグリフの位置や、フォントキャッシュ内のラスタライズ済みのすべてのグリフへの参照を含む、グリフランの解析結果が格納されます。

次のコード例は、グリフラン解析オブジェクトを作成する方法を示します。この例では、空のグリフランを使用しています。

HRESULT CreateGlyphRunAnalysis(IDWriteFontFace *pFontFace, IDWriteGlyphRunAnalysis **ppGlyphRunAnalysis)
{
    HRESULT hr = S_OK;
    IDWriteFactory* pDWriteFactory = NULL;

    // Create the DirectWrite factory.
    hr = DWriteCreateFactory(
            DWRITE_FACTORY_TYPE_SHARED,
            __uuidof(IDWriteFactory),
            reinterpret_cast<IUnknown**>(&pDWriteFactory)
            );

    DWRITE_GLYPH_RUN emptyGlyphRun = { 0 };
    UINT16 glyphIndex = 0;
    
    emptyGlyphRun.fontFace = pFontFace;
    emptyGlyphRun.glyphIndices = &glyphIndex;
    emptyGlyphRun.glyphCount = 0;
   
    emptyGlyphRun.fontEmSize = 12;

    IDWriteGlyphRunAnalysis* pGlyphRunAnalysis = NULL;

    if (SUCCEEDED(hr))
    {
        hr = pDWriteFactory->CreateGlyphRunAnalysis(
            &emptyGlyphRun,
            1.0f, // pixelsPerDip,
            NULL, // transform,
            DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC,
            DWRITE_MEASURING_MODE_GDI_CLASSIC,
            0.0f, // baselineOriginX,
            0.0f, // baselineOriginY,
            &pGlyphRunAnalysis);
    }
    
    *ppGlyphRunAnalysis = pGlyphRunAnalysis;

    SafeRelease(&pDWriteFactory);

    return S_OK;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDWriteFactory "{B859EE5A-D838-4B5B-A2E8-1ADC7D93DB48}"
#usecom global IDWriteFactory IID_IDWriteFactory "{}"
#comfunc global IDWriteFactory_GetSystemFontCollection         3 sptr,int
#comfunc global IDWriteFactory_CreateCustomFontCollection      4 sptr,sptr,int,sptr
#comfunc global IDWriteFactory_RegisterFontCollectionLoader    5 sptr
#comfunc global IDWriteFactory_UnregisterFontCollectionLoader  6 sptr
#comfunc global IDWriteFactory_CreateFontFileReference         7 wstr,var,sptr
#comfunc global IDWriteFactory_CreateCustomFontFileReference   8 sptr,int,sptr,sptr
#comfunc global IDWriteFactory_CreateFontFace                  9 int,int,sptr,int,int,sptr
#comfunc global IDWriteFactory_CreateRenderingParams           10 sptr
#comfunc global IDWriteFactory_CreateMonitorRenderingParams    11 sptr,sptr
#comfunc global IDWriteFactory_CreateCustomRenderingParams     12 float,float,float,int,int,sptr
#comfunc global IDWriteFactory_RegisterFontFileLoader          13 sptr
#comfunc global IDWriteFactory_UnregisterFontFileLoader        14 sptr
#comfunc global IDWriteFactory_CreateTextFormat                15 wstr,sptr,int,int,int,float,wstr,sptr
#comfunc global IDWriteFactory_CreateTypography                16 sptr
#comfunc global IDWriteFactory_GetGdiInterop                   17 sptr
#comfunc global IDWriteFactory_CreateTextLayout                18 wstr,int,sptr,float,float,sptr
#comfunc global IDWriteFactory_CreateGdiCompatibleTextLayout   19 wstr,int,sptr,float,float,float,var,int,sptr
#comfunc global IDWriteFactory_CreateEllipsisTrimmingSign      20 sptr,sptr
#comfunc global IDWriteFactory_CreateTextAnalyzer              21 sptr
#comfunc global IDWriteFactory_CreateNumberSubstitution        22 int,wstr,int,sptr
#comfunc global IDWriteFactory_CreateGlyphRunAnalysis          23 var,float,var,int,int,float,float,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。