Skrift-fallback og vertikal tekst
HotPDF kan velge fallback-skrifter etter Unicode-skript, rapportere kodepunkter som forblir uløst, og skrive CJK-tekst gjennom en ekte vertikal CID-skrivemodus
Fallback-kjeder på dokumentnivå
THotPDF.SetFontFallbackChain lagrer en ordnet skriftliste for én THPDFFontScript-kategori
THPDFPage.TextOutWithFallback løser hver Unicode-skalar mot den valgte skriften, dens skriptkjede og den felles kjeden, og sender deretter ut tilstøtende skalarer med samme skrift som én tekstrun
- Fallback-kjeder er dokumentinnstillinger og forblir tilgjengelige på tvers av sider
- Duplikate og tomme skriftnavn fjernes mens oppkallerens rekkefølge bevares
- Probning av installerte skifter avviser stille GDI-substitusjon før dekning aksepteres
- Skalarer i supplerende-plan dekodes fra UTF-16-surrogatpar før klassifisering
- Hver fallback-run bruker den eksisterende innebygde Type0-skriften, subsetting,
ToUnicodeog den delte skriftstien på tvers av sider - Fallback-utlegg sjekker installerte fontfamilier med ønsket fet og kursiv face, beholder alle innstillinger for skriftstil, tegnsett, størrelse og skriveretning på tvers av runer, og gjenoppretter oppkallerens skrift etterpå
Handlingsbar diagnostikk
AnalyzeUnresolvedGlyphs utfører et skrivebeskyttet dekningsrevisjon, mens TextOutWithFallback registrerer uløste skalarer oppstått under utdata
Hver THPDFUnresolvedGlyphInfo inkluderer skalar-kodepunktet, primærskriften, klassifisert skript og en semikolonseparert liste med forslag til fallback
GetUnresolvedGlyphs returnerer gjeldende dokumentrapport og ClearUnresolvedGlyphs starter et nytt rapporteringsintervall
Overloadingene med eksplisitt stil av THotPDF.ResolveFontForCodePoint og THotPDF.AnalyzeUnresolvedGlyphs godtar TFontStyles, slik at preflight kan inspisere samme face som brukes til utdata; originaloverloadingene fortsetter å inspisere regular-varianter
Tekstbokser, SVG-innebygd tekst og innlastede tekstutseender beholder stilfulle fontfamilier gjennom fallback-utleggingen, i stedet for å behandle PDF-ens interne skriftnavn som systemfamilier eller bytte hver run til en regular-face
Vertikal CJK-skriving
THPDFPage.TextOutVertical velger gjeldende skrifts vertikale variant og sender ut én Identity-V-tekstrun i stedet for å plassere hvert tegn manuelt
- CID-etterkommer-skriften inneholder
/DW2-standardverdier og glyf-spesifikke/W2-oppføringer - Når de finnes, leverer OpenType
vheaogvmtxvertikale avstander ogVORGleverer vertikale origoerVORGgir de autoritative CFF-standardverdiene for origo og unntakene - Skrifter uten vertikale tabeller bruker konfigurerbare standarder på 1000-enhers avstand og 880-enhers origo
- Med
sfVerticalAlternatesbruker hele den lengdebevarende GSUB-kjøringenvrt2når den annonseres, ellers faller den tilbake tilvert, og beholder det aktive skript- og språkvalget - Når en font utelater en tegnsettingssubstitusjon men mapper Unicode vertikale presentasjonsformer, bruker kommaer, punktum, klammer, tankestreker, ellipser og relatert tegnsetting de glyfene, mens
ToUnicodebevarer kildeteksten - Eksisterende
vert-,vrt2- og vertikale GPOS-funksjoner forblir tilgjengelige gjennomShapingFeatures GetVerticalTextAdvancereturnerer avstanden i brukerrom som trengs for å plassere neste vertikale 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;