ApplyMyanmarReorder

Signature

function ApplyMyanmarReorder(const Wide: UnicodeString): UnicodeString;

Purpose

Applies the Myanmar reorder pre-pass to Wide and returns a UnicodeString prepared for cmap and GSUB consumption. Text outside Myanmar remains byte-stable, so callers can route mixed text without changing unrelated runs

Coverage

  • Myanmar uses the mymr script record for U+1000-U+109F and U+AA60-U+AA7F. The documented path covers Kinzi, medial sorting, pre-base vowel, ASAT, and stacked-consonant handling while preserving API behaviour for producer-side shaping
  • ApplyIndicReorder dispatches to this helper when the active codepoint range matches U+1000-U+109F and U+AA60-U+AA7F

Example

var
  Wide: UnicodeString;
begin
  // Input: KA (U+1000) + E-vowel (U+1031, pre-base)
  Wide:= Doc.ApplyMyanmarReorder(#$1000#$1031);
  // Wide is now: E (U+1031) + KA (U+1000)

  // Input: Kinzi (U+1004 U+103A U+1039) + KA + AA-vowel (U+102C)
  Wide:= Doc.ApplyMyanmarReorder(#$1004#$103A#$1039#$1000#$102C);
  // Wide unchanged: Kinzi + KA + AA (all in canonical positions)

  // Input: KA + medials H + W + R + Y (reversed source order)
  Wide:= Doc.ApplyMyanmarReorder(#$1000#$103E#$103D#$103C#$103B);
  // Wide is now: KA + Y + R + W + H (R9 sorted)
end;

See also

Standards

  • Unicode 16.0 U+1000-U+109F and U+AA60-U+AA7F
  • ISO 32000-1 ยง9.10
  • OpenType Myanmar shaping specification

Version history

  • v2.120.10 - Introduced as part of the HotPDF Indic shaping batch