|
Arabic / Persian / Urdu Shaping Support Producer-side shaping pipeline (v2.85.0 - v2.119.68)
|
OpenType GSUB Engine CFF / OpenType Subsetting |
|
HotPDF ajaa tuottajapuolella muotoiluputkea, joka taittaa Unicode-syötteiset arabian, persian ja urdun kielen ajot arabian esitysmuotoihin (Arabic Presentation Forms) PDF-tekstin lähetyksen aikana, jotta katseluohjelmat vastaanottavat renderöintivalmiita sijainti- / ligatuuriglyfejä tarvitsematta omaa Harfbuzz-luokan muotoilijaa
Mitä käsittelyputki tekee Asemamuotoilu (v2.85.0): jokaisella arabialaisella peruskirjaimella on enintään neljä asemamuotoa – itsenäinen (
Pakollinen LAM-ALEF-ligatuuri (v2.119.32): arabian Unicode-muotoilumääritys (Arabic Unicode Shaping spec) vaatii, että mikä tahansa LAM (U+0644), jota seuraa välittömästi ALEF (U+0627 tavallinen, U+0622 madda yläpuolella, U+0623 hamza yläpuolella, U+0625 hamza alapuolella), yhdistyy yhdeksi ligatuuriglyfiksi (U+FEFB - U+FEFC itsenäiset / lopulliset muodot asianmukaisilla hamza- / madda-varianteilla). Tämä on yksi harvoista pakollisista ligatuureista arabialaisessa typografiassa ja sitä vaaditaan oikeellisuuden vuoksi; niiden renderöiminen erillisinä glyfeinä tuottaa tekstiä, jonka äidinkieliset lukijat tunnistavat heti virheelliseksi. HotPDF suorittaa yhdistämisen tulostuksen aikana, joten kutsujat eivät tarvitse Harfbuzz-luokan muotoilijaa omassa koodipolussaan
Persian / Urdu core 9 letters (v2.119.35): persia ja urdu laajentavat arabiaa kirjaimilla, joita ei ole Arabic Presentation Forms-B -lohkossa (U+FE70 - U+FEFC). Yhdeksällä eniten käytetyllä tällaisella kirjaimella – mukaan lukien PEH (U+067E), TCHEH (U+0686), JEH (U+0698), KEH (U+06A9 / U+06AF), GAF (U+06AF), NOON GHUNNA (U+06BA), HEH DOACHASHMEE (U+06BE), YEH BARREE (U+06D2) ja HEH GOAL (U+06C1) – on esitysmuodot Arabic Presentation Forms-A -lohkossa (U+FB50 - U+FDFF). HotPDF kartoittaa nyt nämä kirjaimet asianmukaiseen Forms-A-glyfiin asemamuotoilun aikana, jotta persian- ja urdunkielinen teksti piirtyy oikeilla init- / medi- / fina- / isol-muodoilla kaikissa lukulaitteissa
Arabic Extended-A + Supplement (v2.119.52, v2.119.56): liitosluokkataulukko (joining-class table) kattaa nyt loput arabian Extended-A-merkit (ALEF WASLA / NOON GHUNNA / HEH -variantit), Arabic Supplement U+0750-U+077F -alueen ja ylemmän arabian Extended-A U+08A0-U+08FF -alueen. Merkit, joilla on staattinen Presentation Forms-A -koodaus, kartoitetaan olemassa olevan 4-asentoisen muotoilijan kautta; merkit ilman sitä (suurin osa Extended-A:sta) saavat vain liitosluokkakohdistuksen, jotta naapurit muotoillaan oikein silloinkin, kun itse merkki välitetään muuttumattomana. Versio v2.119.56 korjasi kaksi virheellistä Forms-A-kartoitusta, jotka versio v2.119.52 toi mukanaan (U+06C2 / U+06C3)
Persian / Urdu Form-B full coverage (v2.119.57): liitostyyppitaulukkoa (joining-class table) laajennettiin kattamaan koko alue U+0672-U+06D5 (noin 80 merkkiä, jotka kattavat REH / DAL / SEEN / SAD / TAH / AIN / FEH / QAF / KAF / GAF / LAM / NOON / HEH / WAW / YEH -variantit), ja 26 uutta Presentation Forms-A -kartoitusta lisättiin (15 D-luokan 4-muotoista + 11 R-luokan 2-muotoista). Erityisesti urdun vakio 'h' HEH DOACHASHMEE (U+06BE → FBAA-FBAD) ja urdun sananloppuinen yeh YEH BARREE (U+06D2 → FBAE-FBAF) on nyt kartoitettu oikein Forms-A-paikkoihin, joita käytettiin väärin version v2.119.52 ALEF WASLA / NOON GHUNNA väliaikaisessa korjauksessa. Staattinen Forms-A-kattavuus kattaa nyt yli 40 lähdemerkkiä
YEH-HAMZA + vokaaliligatuurin jälkiajo (v2.119.58): proseduuriin
Allah-ligatuuri (v2.119.60): nelimerkkinen sarja ALEF + LAM + LAM + HEH yhdistyy muotoon U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM. Toteutettu koodipistetasoisena staattisena jälkiajona (post-pass) version v2.119.32 LAM-ALEF:n ja version v2.119.58 YEH-HAMZA:n jälkeen
Bismillah-lauseen ligatuuri (v2.119.62): vakioinen 22 koodipisteen Bismillah-lause "بسم الله الرحمن الرحيم" yhdistyy yhdeksi glyfiksi U+FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM. Ajetaan aivan ensimmäisenä esiajonakäsittelynä
Public Query Helpers
How callers invoke it Muotoiluputki ajetaan automaattisesti Unicode-tekstintulostusmetodien sisällä - erillistä "shape this" -kutsua ei vaadita. Välitä Unicode-syötteen arabian-, persian- tai urdunkieliset merkkijonot metodille THPDFPage.UnicodeTextOut tai THPDFPage.RtLTextOut, jolloin HotPDF kartoittaa jokaisen syötekoodipisteen sen esitysmuotoon ennen PDF-tekstinnäyttöoperaattorin kirjoittamista. Alkuperäiset Unicode-tavut kerätään myös kohteeseen
Font requirements Metodin
Noto Sans Arabic (latinalainen + arabialainen; Forms-A + Forms-B + Arabic Extended-A) Noto Naskh Arabic, Noto Naskh Arabic UI. Amiri (perinteinen Naskh, kattava Forms-A + Forms-B -kattavuus) Scheherazade New (SIL, suunniteltu muslimimaailman kielille) Microsoft Arabic Typesetting / Tahoma / Times New Roman (Windowsin mukana toimitetut, kattava Forms-B; joillakin on myös Forms-A-kattavuus)
Kun rekisteröidystä fontista puuttuu glyyfi johdetulle esitysmuodolle, HotPDF turvautuu Unicoden peruskoodipisteeseen ja lähettää sen muuttumattomana; kuluttajalukijat voivat tämän jälkeen yrittää omaa muotoiluaan (Acrobat, Foxit) tai hahmontaa merkin
Typical workflow
PDF.RegisterUnicodeTTF('NotoArab', 'NotoSansArabic-Regular.ttf'); PDF.BeginDoc; PDF.CurrentPage.SetFont('NotoArab', [], 14); PDF.CurrentPage.RtLTextOut(100, 700, 0, UnicodeString(#$0645#$0631#$062D#$0628#$0627)); // "marhaba" (hello) PDF.EndDoc;
Automatic Phase 8 pipeline integration (v2.119.59 - v2.119.68) versio v2.119.59 toi valinnaisen
Kun
ToUnicode CMap -ligatuurin käänteiskartoitus (v2.119.61, v2.119.62, v2.119.65) Metodin
PUA synthetic codepoint emit (v2.119.68) Metodit
Suhde OpenType GSUB -moottoriin Yllä kuvattu staattinen jälkikäsittelymuotoilija (v2.85.0 + v2.119.32 / 58 / 60 / 62) on oletusarvoisesti riippumaton OpenType GSUB engine -moottorista. Kun
Jos korvaavilla glyfeillä ei ole Unicode-koodipistettä, kutsujat yhdistävät
Laajuus ja rajoitukset BiDi-algoritmi jää tämän sivun ulkopuolelle: kutsujien on edelleen itse järjestettävä sekoitetut LTR- ja RTL-tekstijaksot tai käytettävä erillistä BiDi-kirjastoa. GPOS-, intialaisten/tiibetin/mongolin, heprean, N'Ko-, Adlam-, Thai/Lao- ja jaavan tuki sijaitsee nyt erillisillä valinnaisilla muotoilulippu- ja API-sivuilla, joten tämä sivu keskittyy vain staattiseen ja GSUB-pohjaiseen arabian muotoiluun
Katso myös: OpenType GSUB Substitution Engine, Automatic Shaping Pipeline (Phase 8), Syriac / Mongolian / Devanagari Shaping, THotPDF.AssignSyntheticCodepointForGID, THPDFPage.RtLTextOut, THPDFPage.UnicodeTextOut, CFF / OpenType Font Subsetting |