Záloha písem a vertikální text
HotPDF umí vybrat záložní řezy podle Unicode skriptu, nahlásit kódové body, které zůstaly nevyřešené, a zapisovat CJK text skutečným vertikálním CID režimem sazby
Záložní řetězce na úrovni dokumentu
THotPDF.SetFontFallbackChain ukládá seřazený seznam řezů pro jednu kategorii THPDFFontScript
THPDFPage.TextOutWithFallback vyřeší každý Unicode skalár proti vybranému řezu, jeho řetězci skriptu a společnému řetězci a poté emituje sousední skaláry se stejným řezem jako jeden běh textu
- Záložní řetězce jsou nastavení dokumentu a zůstávají dostupné napříč stránkami
- Duplicitní a prázdné názvy řezů jsou odstraněny, přičemž je zachováno pořadí volajícího
- Sondování instalovaných řezů odmítá tichou GDI substituci před přijetím pokrytí
- Skaláry doplňkové roviny jsou dekódovány z UTF-16 náhradníkových párů před klasifikací
- Každý záložní běh používá existující vložené Type0 písmo, podmnožinování,
ToUnicodea sdílenou cestu písma napříč stránkami - Záložní sazba kontroluje instalované rodiny fontů s požadovaným řezem bold a italic, zachovává všechna nastavení stylu písma, znakové sady, velikosti a směru sazby napříč běhy a poté obnoví font volajícího
Akční diagnostika
AnalyzeUnresolvedGlyphs provede audit pokrytí pouze pro čtení, zatímco TextOutWithFallback zaznamenává nevyřešené skaláry nalezené během výstupu
Každý THPDFUnresolvedGlyphInfo obsahuje kódový bod skaláru, primární řez, klasifikovaný skript a středníkem oddělený seznam návrhů zálohy
GetUnresolvedGlyphs vrací aktuální report dokumentu a ClearUnresolvedGlyphs spouští nový interval reportování
Explicitní přetížení se stylem u THotPDF.ResolveFontForCodePoint a THotPDF.AnalyzeUnresolvedGlyphs přijímají TFontStyles, takže preflight může prohlédnout tentýž řez, který jde do výstupu; původní přetížení dál kontrolují řezy regular
Textová pole, vložený text SVG a vzhledy načteného textu si zachovají stylizované rodiny fontů i skrz záložní sazbu, místo aby brala interní jména fontů PDF jako systémové rodiny nebo přehazela všechny běhy na řez regular
Vertikální CJK sazba
THPDFPage.TextOutVertical vybere vertikální variantu aktuálního řezu a emituje jeden běh textu Identity-V namísto ručního pozicování každého znaku
- Potomek CID písma obsahuje výchozí hodnoty
/DW2a položky/W2specifické pro glyf - OpenType
vheaavmtxdodávají vertikální progrese a horní side bearings; počátky TrueType se odvozují z bounding boxu každéhoglyf, zatímcoVORGdodává autoritativní výchozí počátky a výjimky pro CFF - Písma bez vertikálních tabulek používají konfigurovatelné výchozí hodnoty progrese 1000 jednotek a počátku 880 jednotek
- Se
sfVerticalAlternatespoužije kompletní běh GSUB zachovávající délkuvrt2, když ho font nabízí, a jinak spadne zpět navert, přičemž ponechá aktivní výběr skriptu a jazyka - Když font postrádá substituci interpunkce, ale mapuje Unicode vertikální prezentační tvary, použijí čárky, tečky, závorky, pomlčky, ellipsy a související interpunkci tyto glyfy, zatímco
ToUnicodezachová zdrojový text - Svislé GPOS funkce
vkrnavpalzůstávají dostupné přesShapingFeatures GetVerticalTextAdvancevrací advance v uživatelském prostoru potřebný k umístění dalšího svislého běhu
Pří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;