THPDFFontDecoder Record
Holder de løste afkodningstabeller og bredde-metrics for én indlæst PDF-font, bygget af fontens afkodnings-fallback-kæde
Deklaration
THPDFFontDecoder= record
FontKey: AnsiString; // resource key (e.g. /F1) for diagnostics
Subtype: AnsiString; // Type0, Type1, TrueType, CIDFontType2
Strategies: THPDFFontStrategies; // which fallbacks are populated
ToUnicodeMap: THPDFCMapParseResult;
EncodingMap: THPDFCMapParseResult; // /Encoding stream or named CMap
PredefinedEncoding: AnsiString; // 'WinAnsiEncoding' etc
CIDToGIDIdentity: boolean;
CIDToGIDs: array of Word; // binary CIDToGIDMap stream
CIDToUnicode: THPDFCIDToUnicodeTable; // cid2code.txt fallback
GlyphNameUnicode: array[0.. 255] of Cardinal;
GIDToUnicode: THPDFUnicodeByGID;
// v2.505.0 simple-font /Widths (PDF 1.7 9.6.3 Table 111). Index =
// (code - FirstChar); values are 1/1000-em glyph advances. Empty when
// the font has no /Widths array (the interpreter falls back to 0.5*fs)
Widths: array of Double;
FirstChar: Integer;
LastChar: Integer;
CIDWidths: THPDFCIDWidthRanges;
CIDDefaultWidth: Double;
// Vertical (WMode 1) counterparts from the descendant CIDFont /W2 and
// /DW2 (ISO 32000-1 9.7.4.3). Each /W2 metric is a [w1y v1x v1y]
// triple: w1y is the displacement along the writing axis, v1x/v1y the
// position vector from the glyph's horizontal origin to its vertical
// origin. A range entry (cFirst cLast w1y v1x v1y) stores one triple;
// a list entry (c [w1y v1x v1y ...]) stores one triple per CID from
// FirstCID to LastCID. VerticalWriting gates the resolver's vertical
// branch
CIDVertWidths: THPDFCIDWidthRanges;
CIDVertDefaultAdvance: Double; // /DW2 w1y (second entry); default -1000
CIDVertDefaultOriginY: Double; // /DW2 v1y (first entry); default 880
VerticalWriting: boolean;
Ascent: Double;
Descent: Double;
HasVerticalMetrics: boolean;
CodeUnitBytes: Integer; // bytes per char code
OK: boolean;
end;
Enhed
HPDFTextExtraction
Felter
| Felt | Formål |
|---|---|
FontKey | Ressourcenøgle såsom /F1, der navngiver fonten, gemt til diagnostik |
Subtype | Fontordbogens subtype: Type0, Type1, TrueType, CIDFontType2 og venner |
Strategies | Sæt af fallback-strategier, der blev udfyldt med succes |
ToUnicodeMap | Parset /ToUnicode-CMap med bfchar- og bfrange-poster, højeste prioritet |
EncodingMap | Parset /Encoding-strøm eller navngivet CMap |
PredefinedEncoding | Navn på foruddefineret kodning såsom WinAnsiEncoding |
CIDToGIDIdentity | True, når CIDToGIDMap er Identity, og ingen eksplicit tabel er nødvendig |
CIDToGIDs | Binær CIDToGIDMap-strøm udvidet til ét Word pr. CID |
CIDToUnicode | CID-til-Unicode-tabel fra cid2code.txt-fallbacken |
GlyphNameUnicode | Glyph-navne-til-Unicode-tabel med 256 indgange, brugt af /Differences-gendannelse |
GIDToUnicode | Indlejret cmap vendt om fra glyph-id til Unicode |
Widths | Simple-font /Widths-fremrykninger i 1/1000 em, indekseret efter kode minus FirstChar |
FirstChar | Første understøttede tegnkode i Widths-arrayet |
LastChar | Sidste understøttede tegnkode i Widths-arrayet |
CIDWidths | CID-breddeintervaller fra CIDFont /W-arrayet |
CIDDefaultWidth | Standard CID-fremrykning fra /DW |
CIDVertWidths | Vertikale /W2-metrics gemt som [w1y v1x v1y]-tripler pr. CID eller interval |
CIDVertDefaultAdvance | Standard lodret forskydning fra /DW2 w1y, som standard -1000 |
CIDVertDefaultOriginY | Standard lodret origo fra /DW2 v1y, som standard 880 |
VerticalWriting | True, når WMode 1-metrics styrer opløserens vertikale gren |
Ascent | Fontens ascent læst fra fontbeskrivelsens metrics |
Descent | Fontens descent læst fra fontbeskrivelsens metrics |
HasVerticalMetrics | True, når der blev fundet vertikale metrics til fonten |
CodeUnitBytes | Bytes pr. tegnkode, besvaret til indholdsfortolkeren for fonten |
OK | True, når mindst én afkodestrategi er brugbar |
Brugsnoter
- Byg med
HPDFBuildFontDecoder; den simple post holder en sides værd af fonts billig uden egen heap-allokering HPDFDecodeCharCodegennemløber strategierne i prioritetsrækkefølge og returnerer 0 ved miss; manglende strømme degraderer lydløst til næste strategi- Kald
HPDFCloneFontDecoder, når en afkoder skal overleve den cache, der producerede den, da de dynamiske arrays deles ved reference