Font-fallback en verticale tekst
HotPDF kan fallback-fonts kiezen per Unicode-script, onopgeloste codepoints rapporteren en CJK-tekst schrijven via een echte verticale CID-schrijfmodus
Fallbackketens op documentniveau
THotPDF.SetFontFallbackChain bewaart een geordende fontlijst voor één THPDFFontScript-categorie
THPDFPage.TextOutWithFallback lost elke Unicode-scalar op tegen het gekozen font, zijn scriptketen en de gemeenschappelijke keten, en geeft aangrenzende scalars met hetzelfde font als één tekstreeks uit
- Fallbackketens zijn documentinstellingen en blijven beschikbaar over pagina's heen
- Dubbele en lege fontnamen worden verwijderd terwijl de volgorde van de aanroeper behouden blijft
- Onderzoek naar geïnstalleerde fonts wijst stille GDI-substitutie af voordat dekking wordt geaccepteerd
- Scalars uit het supplementary plane worden vóór classificatie gedecodeerd uit UTF-16-surroogparen
- Elke fallback-reeks gebruikt het bestaande ingebedde Type0-font, subsetting,
ToUnicodeen het gedeelde cross-page-fontpad - Fallback-layout controleert geïnstalleerde fontfamilies met het gevraagde vette of cursieve font, behoudt alle instellingen voor fontstijl, tekenset, grootte en schrijfrichting over reeksen heen en herstelt daarna het font van de aanroeper
Actionable diagnostics
AnalyzeUnresolvedGlyphs voert een alleen-lezen dekkingsaudit uit, terwijl TextOutWithFallback tijdens de uitvoer onopgeloste scalars vastlegt
Elke THPDFUnresolvedGlyphInfo bevat het scalar-codepoint, het primaire font, het geclassificeerde script en een op puntkomma gescheiden lijst met fallbacksuggesties
GetUnresolvedGlyphs geeft het huidige documentrapport terug en ClearUnresolvedGlyphs start een nieuw rapportage-interval
De overloads met expliciete stijl van THotPDF.ResolveFontForCodePoint en THotPDF.AnalyzeUnresolvedGlyphs accepteren TFontStyles, zodat preflight hetzelfde font kan inspecteren als bij de uitvoer; hun oorspronkelijke overloads blijven gewone fonts inspecteren
Tekstvakken, ingebedde SVG-tekst en geladen tekstappearances behouden gestileerde fontfamilies door de fallback-layout heen, in plaats van interne PDF-fontnamen als systeemfamilies te behandelen of elke reeks naar een gewoon font om te zetten
Verticaal CJK-schrijven
THPDFPage.TextOutVertical kiest de verticale variant van het huidige font en geeft één Identity-V-tekstreeks uit in plaats van elk teken handmatig te positioneren
- Het CID-descendant-font bevat
/DW2-defaultwaarden en glyphspectifieke/W2-invoeren - OpenType
vheaenvmtxleveren verticale advances en top side bearings; TrueType-oorsprongen worden afgeleid uit elkeglyf-bounding box, terwijlVORGde gezaghebbende CFF-oorsprongsdefaultwaarden en uitzonderingen levert - Fonts zonder verticale tabellen gebruiken instelbare defaultwaarden van 1000 eenheden advance en 880 eenheden oorsprong
- Met
sfVerticalAlternatesgebruikt de complete lengte-bewarende GSUB-rondevrt2wanneer aangekondigd en valt anders terug opvert, met behoud van de actieve script- en taalselectie - Wanneer een font een interpunctie-substitutie overslaat maar Unicode verticale presentation forms mapt, gebruiken komma's, punten, haakjes, streepjes, ellipsen en verwante interpunctie die glyphs terwijl
ToUnicodede brontekst bewaart - De verticale GPOS-functies
vkrnenvpalblijven beschikbaar viaShapingFeatures GetVerticalTextAdvancegeeft de user-space-advance terug die nodig is om de volgende verticale reeks te positioneren
Voorbeeld
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;