Font-fallback og lodret tekst
HotPDF kan vælge fallback-skrifttyper efter Unicode-script, rapportere kodepunkter, der forbliver uløste, og skrive CJK-tekst gennem en ægte lodret CID-skrivetilstand
Fallback-kæder på dokumentniveau
THotPDF.SetFontFallbackChain gemmer en ordnet skrifttypeliste for én THPDFFontScript -kategori
THPDFPage.TextOutWithFallback opløser hver Unicode-skalær mod den valgte skrifttype, dens script-kæde og den fælles kæde og skriver derefter tilstødende skalærer med samme skrifttype som ét tekst-run
- Fallback-kæder er dokumentindstillinger og forbliver tilgængelige på tværs af sider
- Duplikerede og tomme skrifttypenavne fjernes, mens kalderens rækkefølge bevares
- Prøvning af installerede skrifttyper afviser lydløs GDI-substitution, før dækning accepteres
- Skalærer i supplerende planer afkodes fra UTF-16-surrogatpar, før de klassificeres
- Hvert fallback-run bruger den eksisterende indlejrede Type0-font, subsetting,
ToUnicodeog den fælles fontsti på tværs af sider - Fallback-layoutet undersøger installerede fontfamilier med den anmodede fed/kursiv-variant, bevarer alle indstillinger for fontstil, charset, størrelse og skriveretning på tværs af runs og gendanner kalderens font bagefter
Handlingsorienteret diagnostik
AnalyzeUnresolvedGlyphs udfører en skrivebeskyttet dækningsrevision, mens TextOutWithFallback registrerer uløste skalærer, der mødes under output
Each THPDFUnresolvedGlyphInfo indeholder skalærens kodepunkt, primær skrifttype, klassificeret script og en semikolonsepareret liste over fallback-forslag
GetUnresolvedGlyphs returnerer den aktuelle dokumentrapport, og ClearUnresolvedGlyphs starter et nyt rapporteringsinterval
De eksplicitte stil-overloads af THotPDF.ResolveFontForCodePoint og THotPDF.AnalyzeUnresolvedGlyphs accepterer TFontStyles, så preflight kan inspicere samme skriftsnit, som bruges ved output; deres oprindelige overloads inspicerer fortsat regulære skriftsnit
Tekstbokse, indlejret SVG-tekst og indlæste tekst-appearances bevarer fontfamilier med stil gennem fallback-layoutet i stedet for at behandle PDF-interne fontnavne som systemfamilier eller skifte hvert run til et regulært skriftsnit
Vertical CJK writing
THPDFPage.TextOutVertical vælger den aktuelle skrifttypes lodrette variant og skriver ét Identity-V tekst-run i stedet for at placere hvert tegn manuelt
- CID-efterkommer-fonten indeholder
/DW2-standardværdier og glyph-specifikke/W2-entry'er - OpenType
vheaogvmtxleverer lodrette fremskridt og top side bearings; TrueType-origo afledes af hverglyfbounding box, mensVORGleverer de autoritative CFF-origo-standardværdier og -undtagelser - Fonts uden lodrette tabeller bruger konfigurerbare standardværdier: 1000-enheder fremskridt og 880-enheder origo
- With
sfVerticalAlternatesbruger den komplette længdebevarende GSUB-gennemløbvrt2når den annonceres, og falder ellers tilbage tilvertog bevarer det aktive script- og sprogvalg - Når en font udelader en tegnsætningssubstitution, men mapper Unicode's lodrette præsentationformer, bruger kommaer, punktummer, klammer, tankestreger, udeladelser og beslægtet tegnsætning de glyffer, mens
ToUnicodebevarer kildeteksten - Vertical
vkrnogvpalGPOS-features forbliver tilgængelige viaShapingFeatures GetVerticalTextAdvancereturnerer det fremskridt i brugerrummet, der kræves for at placere det næste lodrette run
Eksempel
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;