THPDFFontDecoder Record
Innehåller de uppslagna avkodningstabellerna och breddmetrikerna för ett inläst PDF-typsnitt, byggda av typsnittets avkodningsfallbackkedja
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;
Enhet
HPDFTextExtraction
Fält
| Fält | Syfte |
|---|---|
FontKey | Resursnyckel som /F1 som namnger typsnittet, behållet för diagnostik |
Subtype | Typsnittsordbokens subtype: Type0, Type1, TrueType, CIDFontType2 och liknande |
Strategies | Mängd med fallback-strategier som kunde fyllas |
ToUnicodeMap | Tolkad /ToUnicode-CMap med bfchar- och bfrange-poster, högsta prioritet |
EncodingMap | Tolkad /Encoding-ström eller namngiven CMap |
PredefinedEncoding | Fördefinierat kodningsnamn som WinAnsiEncoding |
CIDToGIDIdentity | True när CIDToGIDMap är Identity och ingen explicit tabell behövs |
CIDToGIDs | Binär CIDToGIDMap-ström expanderad till en Word per CID |
CIDToUnicode | CID-till-Unicode-tabell från fallbacken cid2code.txt |
GlyphNameUnicode | Glyfnamn-till-Unicode-tabell med 256 poster, använd av /Differences-återställningen |
GIDToUnicode | Inbäddad cmap omvänd från glyph-ID till Unicode |
Widths | Bredder från simple-font-/Widths, i 1/1000 em, indexerade med koden minus FirstChar |
FirstChar | Första stödda teckenkoden i Widths-matrisen |
LastChar | Sista stödda teckenkoden i Widths-matrisen |
CIDWidths | CID-breddintervall från CIDFont-/W-matrisen |
CIDDefaultWidth | Standard-CID-bredd från /DW |
CIDVertWidths | Vertikala /W2-metriker lagrade som [w1y v1x v1y]-tripplar per CID eller intervall |
CIDVertDefaultAdvance | Standard vertikalförskjutning från /DW2 w1y, -1000 som standard |
CIDVertDefaultOriginY | Standard vertikal origo från /DW2 v1y, 880 som standard |
VerticalWriting | True när WMode 1-metriker styr lösarens vertikala gren |
Ascent | Typsnittets ascent, läst från typsnittsdescriptorns metriker |
Descent | Typsnittets descent, läst från typsnittsdescriptorns metriker |
HasVerticalMetrics | True när vertikala metriker hittades för typsnittet |
CodeUnitBytes | Byte per teckenkod, som besvaras åt innehållstolken för detta typsnitt |
OK | True när minst en avkodningsstrategi är användbar |
Användningsanteckningar
- Byggs med
HPDFBuildFontDecoder; den rena recorden håller en sida värd av typsnitt billigt, utan egen heapallokering HPDFDecodeCharCodegår igenom strategierna i prioritetsordning och returnerar 0 vid miss; saknade strömmar degraderar tyst till nästa strategi- Anropa
HPDFCloneFontDecodernär en avkodare måste överleva cachen som skapade den, eftersom de dynamiska arrayerna delas per referens