Font fallback e testo verticale
HotPDF può selezionare i font di fallback in base allo script Unicode, segnalare i code point che rimangono non risolti e scrivere testo CJK attraverso una reale modalità di scrittura CID verticale
Catene di fallback a livello di documento
THotPDF.SetFontFallbackChain memorizza un elenco ordinato di font per una categoria THPDFFontScript
THPDFPage.TextOutWithFallback risolve ogni scalare Unicode rispetto al font selezionato, alla sua catena di script e alla catena comune, quindi emette gli scalari adiacenti con lo stesso font come un'unica sequenza di testo
- Le catene di fallback sono impostazioni di documento e rimangono disponibili tra le pagine
- I nomi dei font duplicati e vuoti vengono rimossi mantenendo l'ordine del chiamante
- Il sondaggio dei font installati respinge la sostituzione GDI silenziosa prima di accettare la copertura
- Gli scalari del piano supplementare vengono decodificati dalle coppie surrogate UTF-16 prima della classificazione
- Ogni sequenza di fallback utilizza il font Type0 incorporato esistente, il subsetting,
ToUnicodee il percorso font condiviso tra le pagine - Il layout di fallback verifica le famiglie di font installate con la variante bold e italic richiesta, preserva tutte le impostazioni di stile del font, charset, dimensione e direzione di scrittura tra le sequenze e ripristina il font del chiamante al termine
Diagnostica utilizzabile
AnalyzeUnresolvedGlyphs esegue un controllo di copertura in sola lettura, mentre TextOutWithFallback registra gli scalari non risolti incontrati durante l'output
Ogni THPDFUnresolvedGlyphInfo include lo scalare del code point, il font principale, lo script classificato e un elenco di suggerimenti di fallback separato da punto e virgola
GetUnresolvedGlyphs restituisce il rapporto corrente del documento e ClearUnresolvedGlyphs avvia un nuovo intervallo di reportistica
Gli overload con stile esplicito di THotPDF.ResolveFontForCodePoint e THotPDF.AnalyzeUnresolvedGlyphs accettano TFontStyles, così la verifica preliminare può ispezionare la stessa variante usata per l'output; gli overload originali continuano a ispezionare le varianti regular
I text box, il testo SVG incorporato e le appearance di testo caricate conservano le famiglie di font con stile attraverso il layout di fallback, invece di trattare i nomi dei font interni del PDF come famiglie di sistema o passare ogni sequenza a una variante regular
Scrittura CJK verticale
THPDFPage.TextOutVertical seleziona la variante verticale del font corrente ed emette un'unica sequenza di testo Identity-V anziché posizionare manualmente ogni carattere
- Il font discendente CID contiene i valori predefiniti
/DW2e le voci/W2specifiche per glifo - Quando presenti, le tabelle OpenType
vheaevmtxforniscono avanzamenti verticali e top side bearing; le origini TrueType sono derivate da ogniglyf, mentreVORGfornisce le origini verticali - I font senza tabelle verticali utilizzano valori predefiniti configurabili di avanzamento a 1000 unità e origine a 880 unità
- Con
sfVerticalAlternates, l'intera run GSUB che preserva la lunghezza usavrt2se disponibile e ripiega altrimenti suvert, mantenendo la selezione di script e lingua attiva - Quando un font omette una sostituzione di punteggiatura ma mappa le forme di presentazione verticale Unicode, virgole, punti, parentesi, trattini, ellissi e punteggiatura correlata usano quei glifi mentre
ToUnicodepreserva il testo sorgente - Vertical
vkrnevpalrestano disponibili tramiteShapingFeatures GetVerticalTextAdvancerestituisce l'avanzamento nello spazio utente necessario per posizionare la successiva sequenza verticale
Esempio
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;