# C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi

## Content

<div class="doc-site-dotnet-api-container">



<h1 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi*">AnalyzeBidi Method
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>



<a id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi*"></a>
<h4 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_C1_Util_DX_DirectWrite_TextAnalysisSource_System_Int32_System_Int32_C1_Util_DX_DirectWrite_TextAnalysisSink_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi(C1.Util.DX.DirectWrite.TextAnalysisSource,System.Int32,System.Int32,C1.Util.DX.DirectWrite.TextAnalysisSink)">AnalyzeBidi(TextAnalysisSource, int, int, TextAnalysisSink)</h4>
<div class="markdown level1 summary"><p>Analyzes a text range for script directionality, reading attributes from the source and reporting levels to the sink callback {{SetBidiLevel}}.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public void AnalyzeBidi(TextAnalysisSource analysisSource, int textPosition, int textLength, TextAnalysisSink analysisSink)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Sub AnalyzeBidi(analysisSource As TextAnalysisSource, textPosition As Integer, textLength As Integer, analysisSink As TextAnalysisSink)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="C1.Util.DX.DirectWrite.TextAnalysisSource.html">TextAnalysisSource</a></td>
      <td><span class="parametername">analysisSource</span></td>
      <td><p>A reference to a source object to analyze.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textPosition</span></td>
      <td><p>The starting text position within the source object.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textLength</span></td>
      <td><p>The text length to analyze.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="C1.Util.DX.DirectWrite.TextAnalysisSink.html">TextAnalysisSink</a></td>
      <td><span class="parametername">analysisSink</span></td>
      <td><p>A reference to the sink callback object that receives the text analysis.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_C1_Util_DX_DirectWrite_TextAnalysisSource_System_Int32_System_Int32_C1_Util_DX_DirectWrite_TextAnalysisSink__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>While the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs. Otherwise, the returned levels may be wrong, because the Bidi algorithm is meant to apply to the paragraph as a whole.</p>
</div>


<a id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi*"></a>
<h4 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_C1_Util_DX_DirectWrite_TextAnalysisQuickSource_System_Int32_System_Int32_C1_Util_DX_DirectWrite_TextAnalysisSink_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi(C1.Util.DX.DirectWrite.TextAnalysisQuickSource,System.Int32,System.Int32,C1.Util.DX.DirectWrite.TextAnalysisSink)">AnalyzeBidi(TextAnalysisQuickSource, int, int, TextAnalysisSink)</h4>
<div class="markdown level1 summary"><p>Analyzes a text range for script directionality, reading attributes from the source and reporting levels to the sink callback {{SetBidiLevel}}.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public void AnalyzeBidi(TextAnalysisQuickSource analysisSource, int textPosition, int textLength, TextAnalysisSink analysisSink)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Sub AnalyzeBidi(analysisSource As TextAnalysisQuickSource, textPosition As Integer, textLength As Integer, analysisSink As TextAnalysisSink)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="C1.Util.DX.DirectWrite.TextAnalysisQuickSource.html">TextAnalysisQuickSource</a></td>
      <td><span class="parametername">analysisSource</span></td>
      <td><p>A reference to a source object to analyze.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textPosition</span></td>
      <td><p>The starting text position within the source object.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textLength</span></td>
      <td><p>The text length to analyze.</p>
</td>
    </tr>
    <tr>
      <td><a class="xref" href="C1.Util.DX.DirectWrite.TextAnalysisSink.html">TextAnalysisSink</a></td>
      <td><span class="parametername">analysisSink</span></td>
      <td><p>A reference to the sink callback object that receives the text analysis.</p>
</td>
    </tr>
  </tbody>
</table>
<h5 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_C1_Util_DX_DirectWrite_TextAnalysisQuickSource_System_Int32_System_Int32_C1_Util_DX_DirectWrite_TextAnalysisSink__remarks">Remarks</h5>
<div class="markdown level1 remarks"><p>While the function can handle multiple paragraphs, the text range should not arbitrarily split the middle of paragraphs. Otherwise, the returned levels may be wrong, because the Bidi algorithm is meant to apply to the paragraph as a whole.</p>
</div>


<a id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi*"></a>
<h4 id="C1_Util_DX_DirectWrite_TextAnalyzer_AnalyzeBidi_System_IntPtr_System_Int32_System_Int32_System_IntPtr_" data-uid="C1.Util.DX.DirectWrite.TextAnalyzer.AnalyzeBidi(System.IntPtr,System.Int32,System.Int32,System.IntPtr)">AnalyzeBidi(nint, int, int, nint)</h4>
<div class="markdown level1 summary"><p>HRESULT IDWriteTextAnalyzer::AnalyzeBidi([In] IDWriteTextAnalysisSource* analysisSource,[In] unsigned int textPosition,[In] unsigned int textLength,[In] IDWriteTextAnalysisSink* analysisSink)</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="declaration">Declaration</h5>
<div class="codewrapper">
  <pre><code class="lang-csharp hljs">public void AnalyzeBidi(nint analysisSource, int textPosition, int textLength, nint analysisSink)</code></pre>
</div>
<div class="codewrapper">
  <pre><code class="lang-vbnet hljs">Public Sub AnalyzeBidi(analysisSource As IntPtr, textPosition As Integer, textLength As Integer, analysisSink As IntPtr)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-condensed">
  <thead>
    <tr>
      <th>Type</th>
      <th>Name</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></td>
      <td><span class="parametername">analysisSource</span></td>
      <td></td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textPosition</span></td>
      <td></td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></td>
      <td><span class="parametername">textLength</span></td>
      <td></td>
    </tr>
    <tr>
      <td><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.intptr">nint</a></td>
      <td><span class="parametername">analysisSink</span></td>
      <td></td>
    </tr>
  </tbody>
</table>
</div>
