Czcionka zapasowa i tekst pionowy

HotPDF potrafi wybierać kroje zapasowe według skryptu Unicode, zgłaszać punkty kodowe pozostające nierozstrzygnięte i zapisywać tekst CJK przez rzeczywisty pionowy tryb zapisu CID

Document-level fallback chains

THotPDF.SetFontFallbackChain przechowuje uporządkowaną listę krojów dla jednej kategorii THPDFFontScript

THPDFPage.TextOutWithFallback rozstrzyga każdą wartość skalarną Unicode wobec wybranego kroju, jego łańcucha skryptów i łańcucha wspólnego, a następnie emituje sąsiadujące skalary o tym samym kroju jako jeden przebieg tekstowy

Actionable diagnostics

AnalyzeUnresolvedGlyphs wykonuje inspekcję pokrycia tylko do odczytu, podczas gdy TextOutWithFallback rejestruje nierozstrzygnięte skalary napotkane podczas wyjścia

Każdy THPDFUnresolvedGlyphInfo zawiera punkt kodowy skalara, kroj podstawowy, sklasyfikowany skrypt oraz rozdzieloną średnikami listę sugestii zapasowych

GetUnresolvedGlyphs zwraca bieżący raport dokumentu, a ClearUnresolvedGlyphs rozpoczyna nowy interwał raportowania

Przeciążenia z jawnym stylem metod THotPDF.ResolveFontForCodePoint i THotPDF.AnalyzeUnresolvedGlyphs przyjmują TFontStyles, dzięki czemu preflight może przejrzeć ten sam kroj, który zostanie użyty przy zapisie; ich pierwotne przeciążenia nadal sprawdzają kroje regularne

Boxy tekstowe, osadzony tekst SVG i wyglądy załadowanego tekstu zachowują rodziny fontów ze stylem przez cały layout zapasowy, zamiast traktować wewnętrzne nazwy fontów PDF jako rodziny systemowe albo przełączać każdy przebieg na krój regularny

Vertical CJK writing

THPDFPage.TextOutVertical wybiera wariant pionowy bieżącego kroju i emituje jeden przebieg tekstowy Identity-V zamiast pozycjonować każdy znak ręcznie

Przykład

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;

Powiązane API