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

IDWriteTextAnalysisSink1

COM
IIDb0d941a0-85e7-4d8b-9fd3-5ced9934482a継承元IDWriteTextAnalysisSink自前メソッド開始 vtbl7

公式ドキュメント

テキストアナライザーの出力を受け取るために実装するインターフェイスです。

メソッド 1

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

vtbl 7 HRESULT SetGlyphOrientation(DWORD textPosition, DWORD textLength, DWRITE_GLYPH_ORIENTATION_ANGLE glyphOrientationAngle, BYTE adjustedBidiLevel, BOOL isSideways, BOOL isRightToLeft)

テキストアナライザーは、シェイピングと描画のために各文字の実際の向きを報告する目的でこれをコールバックします。

textPositionDWORDin報告を開始する位置です。
textLengthDWORDin報告される範囲の UTF-16 単位の数です。
glyphOrientationAngleDWRITE_GLYPH_ORIENTATION_ANGLEinテキスト範囲内のグリフの角度を指定する DWRITE_GLYPH_ORIENTATION_ANGLE 型の値です(ワールド相対変換を取得するには IDWriteTextAnalyzer1::GetGlyphOrientationTransform に渡します)。
adjustedBidiLevelBYTEinラン(run)の並べ替えのためにクライアントレイアウトが使用する、調整済みの双方向(bidi)レベルです。これは、グリフが依然として RTL としてシェイピングされる一方でランが CJK や Latin とともに TTB(上から下)になるアラビア語の縦積みのようなケースでは、ソースから取得された解決済みの双方向レベルとは異なります。
isSidewaysBOOLinグリフが横向きに回転しているかどうかを示します。これは CJK の既定のケースであり、縦積みの Latin のケースでもあります。
isRightToLeftBOOLinスクリプトを右から左(right-to-left)としてシェイピングすべきかどうかを示します。アラビア語の縦積み(上から下)の場合、調整済みの双方向レベルが偶数レベルに強制されるときでも、これは true のままです。

戻り値

Type: HRESULT

成功を示すコード、または解析を中止するためのエラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDWriteTextAnalysisSink1 "{B0D941A0-85E7-4D8B-9FD3-5CED9934482A}"
#usecom global IDWriteTextAnalysisSink1 IID_IDWriteTextAnalysisSink1 "{}"
#comfunc global IDWriteTextAnalysisSink1_SetGlyphOrientation  7 int,int,int,int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。