Schrift-Fallback und vertikaler Text

HotPDF kann Fallback-Schriftschnitte nach Unicode-Skript auswählen, Codepunkte melden, die ungelöst bleiben, und CJK-Text über einen echten vertikalen CID-Schreibmodus ausgeben

Dokumentweite Fallback-Ketten

THotPDF.SetFontFallbackChain speichert eine geordnete Schriftschnittliste für eine THPDFFontScript-Kategorie

THPDFPage.TextOutWithFallback löst jeden Unicode-Skalar gegen den ausgewählten Schriftschnitt, seine Skript-Kette und die gemeinsame Kette auf und gibt dann benachbarte Skalare mit demselben Schriftschnitt als einen Textlauf aus

Umsetzbare Diagnose

AnalyzeUnresolvedGlyphs führt eine schreibgeschützte Abdeckungsprüfung durch, während TextOutWithFallback ungelöste Skalare aufzeichnet, die während der Ausgabe auftreten

Jede THPDFUnresolvedGlyphInfo umfasst den Skalar-Codepunkt, den primären Schriftschnitt, das klassifizierte Skript und eine durch Semikolon getrennte Liste von Fallback-Vorschlägen

GetUnresolvedGlyphs gibt den aktuellen Dokumentenbericht zurück und ClearUnresolvedGlyphs startet ein neues Berichtsintervall

Die Overload-Varianten mit explizitem Stil von THotPDF.ResolveFontForCodePoint und THotPDF.AnalyzeUnresolvedGlyphs nehmen TFontStyles entgegen, damit der Preflight denselben Schnitt prüfen kann, der für die Ausgabe verwendet wird; ihre ursprünglichen Overloads prüfen weiterhin reguläre Schriftschnitte

Textboxen, eingebetteter SVG-Text und geladene Text-Darstellungen behalten formatierte Fontfamilien durch das Fallback-Layout, statt PDF-interne Fontnamen als Systemfamilien zu behandeln oder jeden Lauf auf einen regulären Schnitt umzustellen

Vertikale CJK-Schrift

THPDFPage.TextOutVertical wählt die vertikale Variante des aktuellen Schriftschnitts aus und gibt einen Identity-V-Textlauf aus, anstatt jedes Zeichen manuell zu positionieren

Beispiel

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;

Verwandte APIs