|
Syriac / Mongolian / Devanagari Shaping Support Grænseflader for funktioner til flere skrifter (v2.119.53 - v2.119.55)
|
Arabic Shaping Auto Shaping Pipeline GSUB Engine |
|
HotPDF eksponerer forbindelsesklasse-, positionsanalyse- og indisk stavelseskategori-funktionsflader til tre komplekse skrifter ud over arabisk: syrisk (U+0700-U+074F), mongolsk (U+1800-U+18AF) og devanagari (U+0900-U+097F). Hver funktionsevne lader kaldere styre skrifttypen via den eksisterende OpenType GSUB engine med korrekt formning, mens det tunge arbejde med klyngegrænser, BiDi-løsning og GPOS-positionering holdes uden for HotPDF's omfang
Syrisk formningsfunktion (v2.119.53) To nye metoder blotlægger syrisk forbindelsesadfærd:
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Syrisk følger samme Right-Joining / Dual-Joining / Transparent / Non-Joining fire-klasses ramme som arabisk;
I modsætning til arabisk har den syriske blokingen Presentation Forms præ-kodet i Unicode- der er intet syrisk modstykke til U+FB50-FDFF / U+FE70-FEFC arabiske Presentation Forms blokke. Forbrugere skal derfor styre syrisk formning via skrifttypedefinerede GSUB-opslag (typisk
Mongolsk formningsfunktion (v2.119.54) Two parallelle metoder for mongolsk:
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Dækning inkluderer grundlæggende mongolsk (U+1820-U+1842), Todo (U+1843-U+1877), Sibe (U+1880-U+18A8), Manchu og Ali Gali-udvidelser. Variationsvælgere FVS1 / FVS2 / FVS3 (U+180B-U+180D), den bløde bindestreg NIRUGU (U+180A) og Ali Gali-vokalmarkeringer klassificeres alle som gennemsigtige (T-klasse), så de deltager i forbindelsen uden at afbryde gennemgangen
Ligesom syrisk har mongolsk ingen Presentation Forms præ-kodet i Unicode. Mongolsks traditionelle lodrette layout, komplekse regler for bogstavforms-variation og FVS-drevet formvalg forventes alle at blive styret af skrifttypedefinerede GSUB-opslag (typisk
Devanagari indisk formningsfunktion (v2.119.55) Devanagari er grundlæggende anderledes end arabisk / syrisk / mongolsk - det er en indisk abugida-skrift, hvor den betydningsfulde enhed er en stavelsesklynge (akshara), ikke et enkelt bogstav, og den gengivne rækkefølge af glyffer inde i en klynge er ofte anderledes end den logiske Unicode-rækkefølge. To metoder blotlægger Devanagaris indiske kapacitetslag:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
Automatisk integration (v2.119.67): når
Typisk arbejdsgang (syrisk)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc');// se GSUB motor dokumentation fori := 0toLength(Run) - 1do begin Pos := PDF.GetSyriacPosition(Run, i);// init / medi / fina / isol // forespørg GSUB efter den positionsrelevante erstatnings-glyph // emit + MarkUnicodeGlyphUsed end;
Typisk arbejdsgang (Devanagari med automatisk omorganisering)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping];// auto Repha + I-matra omorganisering PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940));// "Hindi"
Hjælpere til Unicode-undersæt og -ekstraktion
Omfang og begrænsninger Nuværende integration på producentsiden Syrisk, mongolsk, tibetansk og indisk formning har nu eksplicitte API-referencesider. Syrisk kan aktiveres via Det aktuelle omfang dækker også N'Ko og Adlam som RTL-kursivskrifter, Thai/Lao SARA AM og tone-markering omorganisering, hebraisk niqqud omorganisering samt javanesiske præ-base tegn. Disse stier er dokumenteret iscript shaping preprocess metoder
Se også: Arabic / Persian / Urdu Shaping Support, Automatic Shaping Pipeline (Phase 8), OpenType GSUB Substitution Engine, THotPDF.AssignSyntheticCodepointForGID |