Font Fallback and Vertical Text
HotPDF dokáže vyberať fallback rezy podľa písma Unicode, hlásiť nevyriešené kódové body a zapisovať text CJK cez reálny vertikálny zápisový režim CID
Záložné reťazce na úrovni dokumentu
THotPDF.SetFontFallbackChain uchováva usporiadaný zoznam rezov pre jednu kategóriu THPDFFontScript
THPDFPage.TextOutWithFallback vyrieši každý skalár Unicode voči vybranému rezu, jeho reťazcu písiem a spoločnému reťazcu a potom zapisuje susedné skaláre s rovnakým rezom ako jeden textový úsek
- Záložné reťazce sú nastaveniami dokumentu a zostávajú dostupné naprieč stránkami
- Duplicitné a prázdne názvy rezov sa odstránia a pritom sa zachová poradie od volajúceho
- Prieskum nainštalovaných rezov odmietne tiché GDI substitúcie skôr, než prijme pokrytie
- Skaláre doplnkových rovín sa dekódujú z surrogate párov UTF-16 skôr, než dôjde ku klasifikácii
- Každý fallback beh používa existujúci vložený font Type0, vytváranie podmnožín,
ToUnicodea zdieľanú cestu fontov naprieč stránkami - Fallback layout kontroluje nainštalované rodiny fontov s požadovaným tučným a kurzívnym rezom, zachováva všetky nastavenia štýlu písma, znakovej sady, veľkosti a smeru zápisu naprieč behmi a potom obnoví font volajúceho
Akcioneschopná diagnostika
AnalyzeUnresolvedGlyphs vykonáva audit pokrytia len na čítanie, zatiaľ čo TextOutWithFallback zaznamenáva nevyriešené skaláre stretolé počas výstupu
Každý THPDFUnresolvedGlyphInfo zahŕňa skalárny kódový bod, primárny rez, klasifikované písmo a zoznam fallback návrhov oddeľovaných bodkočiarkami
GetUnresolvedGlyphs vracia aktuálne hlásenie dokumentu a ClearUnresolvedGlyphs začína nový interval hlásenia
Preťaženia THotPDF.ResolveFontForCodePoint a THotPDF.AnalyzeUnresolvedGlyphs s explicitným štýlom prijímajú TFontStyles, takže preflight môže inšpektovať ten istý rez, aký sa použije pri výstupe; ich pôvodné preťaženia ďalej inšpektujú bežné rezy
Textové boxy, vložený text SVG a vzhľady načítaného textu si cez fallback layout zachovávajú štýlované rodiny fontov, namiesto toho, aby za systémové rodiny považovali interné názvy PDF fontov alebo prepínali každý beh na bežný rez
Vertikálne CJK písanie
THPDFPage.TextOutVertical vyberá vertikálny variant aktuálneho rezu a zapisuje jeden textový úsek Identity-V namiesto ručného pozicionovania každého znaku
- CID descendant font obsahuje predvolené
/DW2a glyfovo špecifické položky/W2 - OpenType
vheaavmtxdodávajú vertikálne posuvy a horné bočné odstupné hodnoty; TrueType pôvodné body sa odvodzujú z ohraničujúceho obdĺžnika každéhoglyf, zatiaľ čoVORGdodáva autoritatívne predvolené CFF pôvodné body a výnimky - Fonty bez vertikálnych tabuliek používajú konfigurovateľné predvolené posuvy 1000 jednotiek a pôvod 880 jednotiek
- S
sfVerticalAlternateskompletný beh GSUB zachovávajúceho dĺžku používavrt2, keď je inzerované, inak spadne naverta pritom zachováva aktívny výber písma a jazyka - Keď font vynechá substitúciu interpunkcie, ale mapuje Unicode vertikálne prezentačné tvary, čiarky, bodky, zátvorky, pomlčky, výplsky a súvisiaca interpunkcia používajú tie glyfy, zatiaľ čo
ToUnicodezachováva zdrojový text - Vertikálne GPOS funkcie
vkrnavpalzostávajú dostupné cezShapingFeatures GetVerticalTextAdvancevracia posuv v user space potrebný na pozicionovanie ďalšieho vertikálneho úseku
Príklad
PDF.SetFontFallbackChain(hfsCJK,
['Microsoft YaHei UI', 'Yu Gothic UI', 'Malgun Gothic']);
PDF.SetFontFallbackChain(hfsEmoji, ['Segoe UI Emoji']);
PDF.CurrentPage.SetFont('Arial', [], 12);
PDF.CurrentPage.TextOutWithFallback(72, 72, 0, Text);
PDF.CurrentPage.SetFont('Yu Gothic UI', [], 14);
PDF.CurrentPage.TextOutVertical(420, 72, VerticalText);
Missing := PDF.GetUnresolvedGlyphs;