|
Podpora za oblikovanje arabščine / perzijščine / urduja Producer-side shaping pipeline (v2.85.0 - v2.119.68)
|
OpenType GSUB Engine CFF / OpenType Subsetting |
|
HotPDF izvaja cevovod oblikovanja na strani proizvajalca, kjer Unicode-arabske, perzijske in urdske vrstice zloži v njihove oblike Arabic Presentation Forms med izpisom besedila PDF, tako da odjemalci prejmejo pripravljene položajne / ligaturne glife brez potrebe po lastnem oblikovalcu razreda Harfbuzz
Kaj počne cevovod Pozicijsko oblikovanje (v2.85.0): vsaka arabska osnovna črka ima do štiri pozicijske oblike - izolirano (isol), začetno (init), sredinsko (medi) in končno (fina). HotPDF pregleda razred vezave vsakega arabskega znaka in razrede vezave njegovih neposrednih sosedov, nato vhodno kodno točko preslika v ustrezni glif v Arabic Presentation Forms-B (U+FE70 - U+FEFC) pred izpisom. Nevezavni znaki, povezovalniki, prozorni znaki (kombinirani znaki) in tatvil kashida so obravnavani po algoritmu Unicode Arabic Shaping
Obvezna ligatura LAM-ALEF (v2.119.32): specifikacija Unicode Arabic Shaping določa, da se vsak LAM (U+0644), ki mu takoj sledi ALEF (U+0627 navaden, U+0622 z mado zgoraj, U+0623 s hamzo zgoraj, U+0625 s hamzo spodaj), zloži v en sam ligaturni glif (U+FEFB - U+FEFC, izolirana / končna oblika z ustreznimi različicami hamze / made). To je ena redkih obveznih ligatur v arabski tipografiji in je nujna za pravilnost; prikazovanje kot ločenih glifov ustvari besedilo, ki ga materni bralci takoj prepoznajo kot nepravilno. HotPDF zložitev izvede med izpisom, zato klicatelju v lastni poti ni treba imeti oblikovalnika razreda Harfbuzz
Osrednjih 9 črk perzijščine / urduja (v2.119.35): Perzijščina in urdu razširjata arabščino s črkami, ki niso v bloku Arabic Presentation Forms-B (U+FE70 - U+FEFC). Devet najpogosteje uporabljenih takih črk - vključno s 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) in HEH GOAL (U+06C1) - ima predstavitvene oblike v Arabic Presentation Forms-A (U+FB50 - U+FDFF). HotPDF zdaj te črke preslika v ustrezne glife Forms-A med položajnim oblikovanjem, zato se besedilo perzijščine in urduja izriše s pravilnimi oblikami init / medi / fina / isol v katerem koli odjemalnem bralniku
Arabski Extended-A + Supplement (v2.119.52, v2.119.56): tabela razredov vezave zdaj pokriva preostale znake Arabic Extended-A (različice ALEF WASLA / NOON GHUNNA / HEH), Arabic Supplement U+0750-U+077F in višji razpon Arabic Extended-A U+08A0-U+08FF. Znaki s statično kodiranostjo Presentation Forms-A se preslikajo skozi obstoječi 4-položajni oblikovalnik; znaki brez nje (večina Extended-A) dobijo le razvrstitev po razredu vezave, da se sosedi pravilno oblikujejo tudi, kadar znak sam ostane nespremenjen. v2.119.56 je popravil dve napačni preslikavi Forms-A, uvedeni v v2.119.52 (U+06C2 / U+06C3)
Popolna pokritost Form-B za perzijščino / urdujščino (v2.119.57): tabela razredov vezave je bila razširjena na celoten razpon U+0672-U+06D5 (okoli 80 znakov, ki zajemajo različice REH / DAL / SEEN / SAD / TAH / AIN / FEH / QAF / KAF / GAF / LAM / NOON / HEH / WAW / YEH), dodanih pa je bilo tudi 26 novih preslikav Presentation Forms-A (15 oblik razreda D s 4 oblikami + 11 oblik razreda R z 2 oblikama). Posebej sta zdaj pravilno preslikana urdski standardni 'h' HEH DOACHASHMEE (U+06BE → FBAA-FBAD) in besedilni končni yeh YEH BARREE (U+06D2 → FBAE-FBAF), ki sta bila v začasnem popravku v2.119.52 za ALEF WASLA / NOON GHUNNA zlorabljena v mestih Forms-A. Statična pokritost Forms-A zdaj obsega več kot 40 izvornih znakov
Dodaten prehod za ligature YEH-HAMZA + samoglasnik (v2.119.58): dodatni prehod, dodan v
Ligatura Allah (v2.119.60): zaporedje štirih znakov ALEF + LAM + LAM + HEH se zlije v U+FDF2 ARABIC LIGATURE ALLAH ISOLATED FORM. Izvedeno kot statični dodatni prehod na ravni kodne točke po v2.119.32 LAM-ALEF in v2.119.58 YEH-HAMZA v verigi
Ligatura fraze Bismillah (v2.119.62): standardna fraza Bismillah z 22 kodnimi točkami "بسم الله الرحمن الرحيم" se zlije v en sam glif U+FDFD ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM. Teče kot prvi predhodni prehod v
Public Query Helpers GetArabicJoiningClass vrne razred vezave Unicode, ki ga uporablja statični arabski oblikovalnik. GetArabicPosition razreši en znak v nizu v izoliran, začetni, sredinski ali končni položaj, tako da lahko klicatelji pregledajo ali posnemajo iste odločitve oblikovanja, preden izpišejo besedilo
How callers invoke it Cevovod oblikovanja se samodejno izvaja znotraj metod za izpis Unicode besedila - poseben klic "oblikuj to" ni potreben. Nize arabščine / perzijščine / urduja z vhodom Unicode posredujte v THPDFPage.UnicodeTextOut ali THPDFPage.RtLTextOut in HotPDF vsako vhodno kodno točko pred pisanjem operatorja za prikaz besedila PDF preslika v njeno predstavitveno obliko. Izvorni bajti Unicode se zapišejo tudi v
Font requirements Pisava, registrirana prek
Noto Sans Arabic (Latin + Arabic; Forms-A + Forms-B + Arabic Extended-A). Noto Naskh Arabic, Noto Naskh Arabic UI. Amiri (traditional Naskh, full Forms-A + Forms-B coverage). Scheherazade New (SIL, designed for languages of the Muslim world). Microsoft Arabic Typesetting / Tahoma / Times New Roman (Windows-bundled, full Forms-B; some have Forms-A coverage).
Ko registrirani pisavi manjka glif za izpeljano predstavitveno obliko, HotPDF pade nazaj na osnovno kodno točko Unicode in jo izpiše nespremenjeno; odjemalni bralniki lahko nato poskušajo lastno oblikovanje (Acrobat, Foxit) ali izrišejo
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) v2.119.59 introduced the opt-in
Ko je
ToUnicode CMap ligature reverse mapping (v2.119.61, v2.119.62, v2.119.65) CMap ToUnicode Adobe-Identity-UCS, ki ga izpiše
PUA synthetic codepoint emit (v2.119.68) AssignSyntheticCodepointForGID(GID; out CP): Boolean + GetSyntheticCodepointForGID(GID): Word omogočata, da proizvajna koda izpiše nadomestne GID-je GSUB, ki prek fontove tabele cmap nimajo naravne Unicode kodne točke. Dodeljevalnik izdaja kodne točke v območju Private Use Area (U+E000 - U+F8FF, 6400 mest) in dodelitev zrcali v FUnicodeCpToGid (da /CIDToGIDMap sintetično CP vrne nazaj na ciljni GID pri potrošniškem bralniku), FAcroFormUnicodeAdvances (da v2.65 prelamljanje vrstic najde pravilno em-razmerje) in v povratno iskalno tabelo po GID (da so ponovne zahteve za dodelitev idempotentne). Uporabite to za oblike skupkov devanagari, slogovne alternative in zaporedja ideografskih različic CJK, ki jih GSUB uvede, cmap pa ne doseže
Razmerje do pogona OpenType GSUB Opisani statični oblikovalnik naknadne obdelave (v2.85.0 + v2.119.32 / 58 / 60 / 62) je privzeto neodvisen od pogona OpenType GSUB. Ko je
Za nadomestne glife brez kodne točke Unicode klicatelji združijo
Obseg in omejitve Algoritem BiDi ostaja zunaj te strani: klicatelji morajo mešane LTR in RTL tokove še vedno razporediti sami ali uporabiti ločeno knjižnico BiDi. Podpora GPOS, Indic/Tibetan/Mongolian, Hebrew, N'Ko, Adlam, Thai/Lao in Javanese je zdaj na ločenih straneh z izbirnimi zastavicami in API-ji oblikovanja, zato se ta stran osredotoča samo na statično in z GSUB osnovano arabsko oblikovanje
Glej tudi: Pogon zamenjav OpenType GSUB, Samodejni cevovod oblikovanja (faza 8), Oblikovanje sirskega, mongolskega in devanagarskega pisma, THotPDF.AssignSyntheticCodepointForGID, THPDFPage.RtLTextOut, THPDFPage.UnicodeTextOut, Delitev pisav CFF / OpenType |