THPDFFontDecoder Record
Hält die aufgelösten Dekodier-Tabellen und Breitenmetriken einer geladenen PDF-Schrift, aufgebaut von der Font-Dekodier-Fallback-Kette
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;
Unit
HPDFTextExtraction
Felder
| Feld | Zweck |
|---|---|
FontKey | Ressourcenschlüssel wie /F1, der die Schrift benennt, für Diagnosen vorgehalten |
Subtype | Font-Dictionary-Subtyp: Type0, Type1, TrueType, CIDFontType2 und Verwandte |
Strategies | Menge der erfolgreich befüllten Fallback-Strategien |
ToUnicodeMap | Geparste /ToUnicode-CMap mit bfchar- und bfrange-Einträgen, höchste Priorität |
EncodingMap | Geparster /Encoding-Strom oder benannte CMap |
PredefinedEncoding | Name einer vordefinierten Kodierung wie WinAnsiEncoding |
CIDToGIDIdentity | True, wenn die CIDToGIDMap Identity ist und keine explizite Tabelle nötig ist |
CIDToGIDs | Binärer CIDToGIDMap-Strom, expandiert auf ein Word je CID |
CIDToUnicode | CID-zu-Unicode-Tabelle aus dem cid2code.txt-Fallback |
GlyphNameUnicode | Glyphennamen-zu-Unicode-Tabelle mit 256 Einträgen, verwendet von der /Differences-Wiederherstellung |
GIDToUnicode | Eingebettete cmap, rückwärts von Glyph-ID zu Unicode |
Widths | Advances der Simple-Font-/Widths in 1/1000 em, indexiert über Code minus FirstChar |
FirstChar | Erster unterstützter Zeichencode des Widths-Arrays |
LastChar | Letzter unterstützter Zeichencode des Widths-Arrays |
CIDWidths | CID-Breitenbereiche aus dem /W-Array der CIDFont |
CIDDefaultWidth | Standard-CID-Advance aus /DW |
CIDVertWidths | Vertikale /W2-Metriken, gespeichert als [w1y v1x v1y]-Tripel je CID oder Bereich |
CIDVertDefaultAdvance | Vertikale Standardverschiebung aus dem w1y von /DW2, standardmäßig -1000 |
CIDVertDefaultOriginY | Vertikaler Standardursprung aus dem v1y von /DW2, standardmäßig 880 |
VerticalWriting | True, wenn WMode-1-Metriken den vertikalen Zweig des Resolvers schalten |
Ascent | Font-Ascent, gelesen aus den Font-Descriptor-Metriken |
Descent | Font-Descent, gelesen aus den Font-Descriptor-Metriken |
HasVerticalMetrics | True, wenn für die Schrift vertikale Metriken gefunden wurden |
CodeUnitBytes | Bytes je Zeichencode, die dem Content-Interpreter für die Schrift als Antwort gemeldet werden |
OK | True, wenn mindestens eine Dekodierstrategie brauchbar ist |
Verwendungshinweise
- Aufgebaut mit
HPDFBuildFontDecoder; der schlichte Record hält die Schriften einer Seite günstig, ohne eigene Heap-Allokation HPDFDecodeCharCodeläuft die Strategien in Prioritätsreihenfolge ab und gibt bei Fehltreffer 0 zurück; fehlende Ströme degradieren lautlos zur nächsten Strategie- Rufen Sie
HPDFCloneFontDecoderauf, wenn ein Dekoder den erzeugenden Cache überleben muss, denn die dynamischen Arrays werden per Referenz geteilt