|
Ondersteuning voor Syrisch / Mongools / Devanagari-vorming Meertalige capabilitylagen (v2.119.53 - v2.119.55)
|
Arabische vorming Automatische vormingspijplijn GSUB-engine |
|
HotPDF biedt capabilitylagen voor joining-class, positionele analyse en Indic-syllabic-category voor drie complexe schriften naast Arabisch: Syriac (U+0700-U+074F), Mongools (U+1800-U+18AF) en Devanagari (U+0900-U+097F). Elke capability laat aanroepers het schrift aansturen via de bestaande OpenType GSUB-engine voor correcte vorming, terwijl het zware werk (detectie van clustergrenzen, BiDi-resolutie, GPOS-positionering) buiten HotPDF blijft
Syriac-vormingscapability (v2.119.53) Twee nieuwe methoden maken het joining-gedrag van Syriac beschikbaar:
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Syriac volgt hetzelfde vierklassenframework voor Right-Joining / Dual-Joining / Transparent / Non-Joining als Arabisch;
In tegenstelling tot Arabisch heeft het Syriac-blok geen presentatievormen die al in Unicode zijn gecodeerd - er bestaat geen Syriac-equivalent van de Arabische Presentation Forms-blokken U+FB50-FDFF / U+FE70-FEFC. Aanroepers moeten Syriac-vorming daarom via door het lettertype gedefinieerde GSUB-lookups aansturen (meestal
Mongoolse vormingscapability (v2.119.54) Twee parallelle methoden voor Mongools:
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
De dekking omvat basis-Mongools (U+1820-U+1842), Todo (U+1843-U+1877), Sibe (U+1880-U+18A8), Manchu en Ali Gali-uitbreidingen. Variation Selectors FVS1 / FVS2 / FVS3 (U+180B-U+180D), de zachte streep NIRUGU (U+180A) en Ali Gali-klinkertekens worden allemaal geclassificeerd als Transparent (T-klasse) zodat ze meedoen aan het joining-proces zonder de loop te onderbreken
Net als Syriac heeft Mongools geen presentievormen die al in Unicode zijn gecodeerd. De traditionele verticale lay-out van Mongools, complexe regels voor variatie in lettervormen en FVS-gestuurde vormselectie worden allemaal verwacht via door het lettertype gedefinieerde GSUB-lookups te verlopen (meestal
Devanagari-Indic-vormingscapability (v2.119.55) Devanagari verschilt fundamenteel van Arabisch / Syriac / Mongools - het is een Indic abugidaschrift waarin de betekenisvolle eenheid een syllabecluster (akshara) is, niet een losse letter, en de gerenderde volgorde van glyphs binnen een cluster vaak afwijkt van de logische Unicode-volgorde. Twee methoden stellen de Indic-capabilitylaag van Devanagari beschikbaar:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
Automatische integratie (v2.119.67): wanneer
Typische workflow (Syriac)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc'); // see GSUB engine doc for i := 0 to Length(Run) - 1 do begin Pos := PDF.GetSyriacPosition(Run, i); // init / medi / fina / isol // query GSUB for the position-appropriate substitute glyph // emit + MarkUnicodeGlyphUsed end;
Typische workflow (Devanagari met automatische herschikking)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; // auto Repha + I-matra reorder PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940)); // "Hindi"
Unicode-subset- en extractiehulpen
Bereik en beperkingen Huidige producer-side-integratie Syriac-, Mongools-, Tibetaans- en Indic-vorming hebben nu expliciete API-referentiepagina’s. Syriac kan via De huidige scope omvat ook N'Ko en Adlam als RTL-cursieve schriften, Thai/Lao voor SARA AM en toonmarkeringen, Hebreeuws voor niqqud-volgorde en Javaans voor pre-base-tekens. Deze paden zijn beschreven in voorverwerkingsmethoden voor scriptvorming
Zie ook: Ondersteuning voor Arabische / Perzische / Urdu-vorming, Automatische vormingspijplijn (fase 8), OpenType GSUB-vervangingsengine, THotPDF.AssignSyntheticCodepointForGID |