IDWriteTextAnalysisSink1

<summary> The interface implemented by the client to receive the output of the text analyzers. </summary>

Members

Functions

SetGlyphOrientation
HRESULT SetGlyphOrientation(UINT32 textPosition, UINT32 textLength, DWRITE_GLYPH_ORIENTATION_ANGLE glyphOrientationAngle, UINT8 adjustedBidiLevel, BOOL isSideways, BOOL isRightToLeft)

<summary> The text analyzer calls back to this to report the actual orientation of each character for shaping and drawing. </summary> <param name="textPosition">Starting position to report from.</param> <param name="textLength">Number of UTF-16 units of the reported range.</param> <param name="glyphOrientationAngle">Angle of the glyphs within the text range (pass to GetGlyphOrientationTransform to get the world relative transform).</param> <param name="adjustedBidiLevel">The adjusted bidi level to be used by the client layout for reordering runs. This will differ from the resolved bidi level retrieved from the source for cases such as Arabic stacked top-to-bottom, where the glyphs are still shaped as RTL, but the runs are TTB along with any CJK or Latin.</param> <param name="isSideways">Whether the glyphs are rotated on their side, which is the default case for CJK and the case stacked Latin</param> <param name="isRightToLeft">Whether the script should be shaped as right-to-left. For Arabic stacked top-to-bottom, even when the adjusted bidi level is coerced to an even level, this will still be true.</param> <returns> A successful code or error code to abort analysis. </returns>

Inherited Members

From IDWriteTextAnalysisSink

SetScriptAnalysis
HRESULT SetScriptAnalysis(UINT32 textPosition, UINT32 textLength, const(DWRITE_SCRIPT_ANALYSIS)* scriptAnalysis)

<summary> Report script analysis for the text range. </summary> <param name="textPosition">Starting position to report from.</param> <param name="textLength">Number of UTF16 units of the reported range.</param> <param name="scriptAnalysis">Script analysis of characters in range.</param> <returns> A successful code or error code to abort analysis. </returns>

SetLineBreakpoints
HRESULT SetLineBreakpoints(UINT32 textPosition, UINT32 textLength, const(DWRITE_LINE_BREAKPOINT)* lineBreakpoints)

<summary> Report line-break opportunities for each character, starting from the specified position. </summary> <param name="textPosition">Starting position to report from.</param> <param name="textLength">Number of UTF16 units of the reported range.</param> <param name="lineBreakpoints">Breaking conditions for each character.</param> <returns> A successful code or error code to abort analysis. </returns>

SetBidiLevel
HRESULT SetBidiLevel(UINT32 textPosition, UINT32 textLength, UINT8 explicitLevel, UINT8 resolvedLevel)

<summary> Set bidirectional level on the range, called once per each level run change (either explicit or resolved implicit). </summary> <param name="textPosition">Starting position to report from.</param> <param name="textLength">Number of UTF16 units of the reported range.</param> <param name="explicitLevel">Explicit level from embedded control codes RLE/RLO/LRE/LRO/PDF, determined before any additional rules.</param> <param name="resolvedLevel">Final implicit level considering the explicit level and characters' natural directionality, after all Bidi rules have been applied.</param> <returns> A successful code or error code to abort analysis. </returns>

SetNumberSubstitution
HRESULT SetNumberSubstitution(UINT32 textPosition, UINT32 textLength, IDWriteNumberSubstitution numberSubstitution)

<summary> Set number substitution on the range. </summary> <param name="textPosition">Starting position to report from.</param> <param name="textLength">Number of UTF16 units of the reported range.</param> <param name="numberSubstitution">The number substitution applicable to the returned range of text. The sink callback may hold onto it by incrementing its ref count.</param> <returns> A successful code or error code to abort analysis. </returns> <remark> Unlike script and bidi analysis, where every character passed to the analyzer has a result, this will only be called for those ranges where substitution is applicable. For any other range, you will simply not be called. </remark>

Meta