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
- Fallback-Ketten sind Dokumenteinstellungen und bleiben über Seiten hinweg verfügbar
- Doppelte und leere Schriftschnittnamen werden entfernt, während die Reihenfolge des Aufrufers erhalten bleibt
- Die Prüfung installierter Schriftschnitte lehnt eine stille GDI-Substitution ab, bevor die Abdeckung akzeptiert wird
- Skalare der ergänzenden Ebene werden vor der Klassifizierung aus UTF-16-Surrogatpaaren dekodiert
- Jeder Fallback-Lauf verwendet die vorhandene eingebettete Type0-Schrift, Subsetting,
ToUnicodeund den gemeinsamen Schrift-Pfad über mehrere Seiten - Das Fallback-Layout prüft installierte Fontfamilien mit dem angeforderten Bold- bzw. Italic-Schnitt, bewahrt alle Einstellungen für Schriftstil, Zeichensatz, Größe und Schreibrichtung über Läufe hinweg und stellt die Schrift des Aufrufers danach wieder her
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
- Die CID-Nachfolgeschrift enthält
/DW2-Standards und glyphenspezifische/W2-Einträge - OpenType-
vheaundvmtxliefern vertikale Vorschübe und obere Vorzeichen; TrueType-Ursprünge leiten sich aus jederglyf-Bounding-Box ab, währendVORGdie verbindlichen CFF-Ursprungsstandards und Ausnahmen liefert - Schriften ohne vertikale Tabellen nutzen konfigurierbare Standards von 1000 Einheiten Vorschub und 880 Einheiten Ursprung
- Mit
sfVerticalAlternatesnutzt der vollständige längenerhaltende GSUB-Durchlaufvrt2, wenn angeboten, und fällt sonst aufvertzurück; die aktive Schrift- und Sprachwahl bleibt erhalten - Lässt eine Schrift eine Interpunktions-Substitution aus, bildet aber Unicode-vertikale Präsentationsformen ab, nutzen Kommas, Punkte, Klammern, Striche, Ellipsen und verwandte Interpunktion diese Glyphen, während
ToUnicodeden Quelltext bewahrt - Die vertikalen GPOS-Features
vkrnundvpalbleiben überShapingFeaturesverfügbar GetVerticalTextAdvanceliefert den User-Space-Vorschub, der nötig ist, um den nächsten vertikalen Lauf 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;