|
Syriac / Mongolian / Devanagari Shaping Support Multi-script capability surfaces (v2.119.53 - v2.119.55)
|
Arabian muotoilu Automaattinen muotoiluputki GSUB-moottori |
|
HotPDF tarjoaa liittymisluokan / sijaintianalyysin / Indic-tavuluokkakonfiguraation pintoja kolmelle monimutkaiselle kirjoitusjärjestelmälle arabian lisäksi: syyria (U+0700-U+074F), mongoli (U+1800-U+18AF) ja devanagari (U+0900-U+097F). Kukin ominaisuus antaa kutsujien ajaa kirjoitusjärjestelmää olemassa olevan OpenType GSUB -moottorin kautta oikeaa muotoilua varten, säilyttäen samalla raskaan työn (ryhmärajan tunnistus, BiDi-selvitys, GPOS-sijoittelu) HotPDF's laajuuden ulkopuolella
Syriac shaping capability (v2.119.53) Kaksi uutta metodia tuovat esiin syyrian liittymiskäyttäytymisen:
function GetSyriacJoiningClass(CP: Cardinal): TJoiningClass; function GetSyriacPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Syyria noudattaa samaa neljän luokan kehystä (Right-Joining / Dual-Joining / Transparent / Non-Joining) kuin arabia;
Toisin kuin arabialla, syyrian lohkolla ei ole esitysmuotoja valmiiksi koodattuna Unicodeen - syyrialla ei ole vastetta arabian Presentation Forms -lohkoille U+FB50-FDFF / U+FE70-FEFC. Kuluttajien on siksi ohjattava syyrian muotoilua fontissa määritettyjen GSUB-hakujen (yleensä
Mongolian shaping capability (v2.119.54) Kaksi rinnakkaista metodia mongolille:
function GetMongolianJoiningClass(CP: Cardinal): TJoiningClass; function GetMongolianPosition(const Run: array of Cardinal; Index: Integer): TPosition;
Kattavuus sisältää mongolian perusmerkit (U+1820-U+1842), Todon (U+1843-U+1877), Siben (U+1880-U+18A8), mantšun ja Ali Gali -laajennukset. Variaatiovalitsimet FVS1 / FVS2 / FVS3 (U+180B-U+180D), pehmeä tavuviiva NIRUGU (U+180A) ja Ali Galin vokaalimerkit on kaikki luokiteltu läpinäkyviksi (T-luokka), joten ne osallistuvat liitokseen katkaisematta merkkisarjan läpikäyntiä
Kuten syyrialla, mongolilla ei ole Unicodeen valmiiksi koodattuja esitysmuotoja (Presentation Forms). Mongolian perinteisen pystysuuntaisen asettelun, monimutkaisten kirjainmuotojen variaatiosääntöjen ja FVS-ohjatun muodonvalinnan odotetaan kaikkien olevan fontin määrittelemien GSUB-hakujen (tyypillisesti
Devanagari Indic shaping capability (v2.119.55) Devanagari on perustavanlaatuisesti erilainen kuin arabia / syyria / mongoli – se on intialainen abugida-kirjoitusjärjestelmä, jossa merkityksellinen yksikkö on tavuryhmä (akshara), ei yksittäinen kirjain, ja glyfien piirtyvä järjestys ryhmän sisällä on usein erilainen kuin looginen Unicode-järjestys. Kaksi metodia tuo esille devanagarin intialaisen kykykerroksen:
function GetDevanagariCategory(CP: Cardinal): TIndicCategory; procedure ApplyDevanagariReorder(var Run: array of Cardinal);
Automaattinen integrointi (v2.119.67): kun
Typical workflow (Syriac)
PDF.RegisterUnicodeTTF('Estrangelo', 'SyrCOMEdessa.otf'); PDF.SetGSUBScript('syrc'); // katso GSUB-moottorin dokumentaatio for i := 0 to Length(Run) - 1 do begin Pos := PDF.GetSyriacPosition(Run, i); // init / medi / fina / isol // kysy GSUB:lta sijaintiin sopivaa korvaavaa glyfiä // emit + MarkUnicodeGlyphUsed end;
Tyypillinen työnkulku (Devanagari automaattisella uudelleenjärjestelyllä)
PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfIndicShaping]; // automaattinen Repha + I-matra -uudelleenjärjestely PDF.CurrentPage.SetFont('NotoDeva', [], 14); PDF.CurrentPage.UnicodeTextOut(50, 700, 0, UnicodeString(#$0939#$093F#$0928#$094D#$0926#$0940)); // "Hindi"
Unicode-osajoukko- ja erottamisapuohjelmat
Laajuus ja rajoitukset Nykyinen tuottajapuolen integraatio Syyrian, mongolin, tiibetin ja intialaisten kirjoitusjärjestelmien muotoilulla on nyt omat API-viitesivunsa. Syyria voidaan ottaa käyttöön asetuksella Nykyinen laajuus kattaa myös N'Ko- ja Adlam-kirjoitukset RTL-kaunokirjoituksina, Thai/Lao SARA AM -merkin ja toonimerkkien järjestelyn, heprean niqqud-merkkien järjestelyn sekä jaavan esikantamerkit. Nämä polut on dokumentoitu sivulla script shaping preprocess methods
Katso myös: Arabic / Persian / Urdu Shaping Support, Automatic Shaping Pipeline (Phase 8), OpenType GSUB Substitution Engine, THotPDF.AssignSyntheticCodepointForGID |