|
Automatic Shaping Pipeline (Phase 8) Opt-in producer-side GSUB pipeline (v2.119.59 - v2.120.10)
|
Arabic Shaping Multi-Script Shaping GSUB Engine |
|
Automatski pipeline oblikovanja podiže OpenType GSUB engine iz capability-only query surface u feature na strani proizvođača koji se automatski primenjuje dok se tekst emituje u PDF tokove sadržaja. Pozivaoci uključuju određene GSUB funkcije kroz tipizirani skup (
Opt-in framework (v2.119.59 / Phase 8a) A new enum and property control which automatic substitutions run during text emission:
type THPDFShapingFeature = ( sfArabicGSUB, // native Arabic init / medi / fina / isol + rlig / calt / rclt sfStandardLigatures, // Latin 'liga' (ff / fi / fl / ffi / ffl / sft / st) sfContextualLigatures,// Latin 'clig' (contextual ligatures) sfContextualAlternates,// 'rclt' (Required Contextual Alternates) sfIndicShaping); // Devanagari Repha + pre-base I-matra reorder THPDFShapingFeatures = set of THPDFShapingFeature;
property ShapingFeatures: THPDFShapingFeatures read ... write ...;
Podrazumevano je [] (prazan skup), što čuva byte-identičan izlaz za pozivaoce koji zavise od statičkog post-pass oblikovača v2.119.32-58. Postavljanje jedne ili više zastavica podiže mehanizam u automatski režim za odgovarajuće funkcije
sfArabicGSUB - native Arabic GSUB shaping (v2.185.0) Kada je
Postavljanje sfArabicGSUB implicitno zaobilazi statički 4-pozicioni oblikovač za arapski iz v2.85.0 - pozivaoci kojima je potreban statički oblikovač da nastavi da obrađuje kodpoente izvan onoga što fontov GSUB objavljuje treba da ostave sfArabicGSUB isključen
sfStandardLigatures / sfContextualLigatures - Phase 8b (v2.119.65) Kada je
sfContextualAlternates - GSUB 'rclt' (v2.119.66) Kada je
Canonical users of
sfIndicShaping - Phase 8e (v2.119.67) Kada je
Advance-query support (v2.119.64 / Phase 8c.5) Prateći API izlaže keširanu vrednost /W em-frakcije kako bi pozivaoci mogli ispravno da izračunaju prelom reda prilikom emitovanja GSUB-zamenjenih glifova
function GetCodepointAdvance(CP: Cardinal): Single;
Vraća širinu pomaka izvedenu iz hmtx kao deo em jedinice za cmap-rešeni glif na CP. Izdanje je takođe ispravilo CodeUnitAdvance da Arabic Presentation Forms (U+FB50-FDFF + U+FE70-FEFF) klasifikuje kao NARROW umesto WIDE (heuristički fallback je bio pogrešan pre v2.65)
Typical workflow (full Arabic auto-shaping)
PDF.RegisterUnicodeTTF('NotoArab', 'NotoSansArabic-Regular.ttf'); PDF.ShapingFeatures := [sfArabicGSUB, // native Arabic GSUB contextual glyphs sfCursiveAttachment]; // GPOS cursive entry / exit anchors PDF.SetGSUBScript('arab'); PDF.BeginDoc; PDF.CurrentPage.SetFont('NotoArab', [], 14); PDF.CurrentPage.RtLTextOut(100, 700, 0, UnicodeString(#$0628#$0633#$0645#$0020#$0627#$0644#$0644#$0647)); PDF.EndDoc;
Typical workflow (Latin standard ligatures + Devanagari reorder)
PDF.RegisterUnicodeTTF('NotoSans', 'NotoSans-Regular.ttf'); PDF.RegisterUnicodeTTF('NotoDeva', 'NotoSansDevanagari-Regular.ttf'); PDF.ShapingFeatures := [sfStandardLigatures, // FB00-FB06 Latin liga sfContextualLigatures, // + clig sfIndicShaping]; // Devanagari Repha + I-matra reorder
Phase 8 roadmap closure Phase 8a (v2.119.59) opt-in framework + Arabic capability; Phase 8b (v2.119.65) Latin standard ligatures; Phase 8c.1 (v2.119.60) Allah; Phase 8c.2 (v2.119.63) GID-level GSUB
Scope and limitations Opt-in pipeline je namerno aditivan u odnosu na statički post-pass oblikovač - postojeći pozivaoci ne vide promenu ponašanja osim ako se ne uključe. Podrazumevani skup
Trenutna mapa API-ja za oblikovanje Trenutni pipeline više nije samo zamena: Nedavna proširenja dodaju sfLocalizedForms za locl, calt kroz ApplyGSUBContextualFeature, kontekstualni i vertikalni GPOS kerning, nativno emitovanje arapskih GSUB kontekstualnih glifova i putanje za N'Ko, Adlam, Thai/Lao, Hebrew i Javanese. Videti metode za preprocesiranje oblikovanja pisama
See also: OpenType GSUB Substitution Engine, Arabic / Persian / Urdu Shaping Support, Syriac / Mongolian / Devanagari Shaping, THotPDF.AssignSyntheticCodepointForGID, CFF / OpenType Font Subsetting |