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

FeldZweck
FontKeyRessourcenschlüssel wie /F1, der die Schrift benennt, für Diagnosen vorgehalten
SubtypeFont-Dictionary-Subtyp: Type0, Type1, TrueType, CIDFontType2 und Verwandte
StrategiesMenge der erfolgreich befüllten Fallback-Strategien
ToUnicodeMapGeparste /ToUnicode-CMap mit bfchar- und bfrange-Einträgen, höchste Priorität
EncodingMapGeparster /Encoding-Strom oder benannte CMap
PredefinedEncodingName einer vordefinierten Kodierung wie WinAnsiEncoding
CIDToGIDIdentityTrue, wenn die CIDToGIDMap Identity ist und keine explizite Tabelle nötig ist
CIDToGIDsBinärer CIDToGIDMap-Strom, expandiert auf ein Word je CID
CIDToUnicodeCID-zu-Unicode-Tabelle aus dem cid2code.txt-Fallback
GlyphNameUnicodeGlyphennamen-zu-Unicode-Tabelle mit 256 Einträgen, verwendet von der /Differences-Wiederherstellung
GIDToUnicodeEingebettete cmap, rückwärts von Glyph-ID zu Unicode
WidthsAdvances der Simple-Font-/Widths in 1/1000 em, indexiert über Code minus FirstChar
FirstCharErster unterstützter Zeichencode des Widths-Arrays
LastCharLetzter unterstützter Zeichencode des Widths-Arrays
CIDWidthsCID-Breitenbereiche aus dem /W-Array der CIDFont
CIDDefaultWidthStandard-CID-Advance aus /DW
CIDVertWidthsVertikale /W2-Metriken, gespeichert als [w1y v1x v1y]-Tripel je CID oder Bereich
CIDVertDefaultAdvanceVertikale Standardverschiebung aus dem w1y von /DW2, standardmäßig -1000
CIDVertDefaultOriginYVertikaler Standardursprung aus dem v1y von /DW2, standardmäßig 880
VerticalWritingTrue, wenn WMode-1-Metriken den vertikalen Zweig des Resolvers schalten
AscentFont-Ascent, gelesen aus den Font-Descriptor-Metriken
DescentFont-Descent, gelesen aus den Font-Descriptor-Metriken
HasVerticalMetricsTrue, wenn für die Schrift vertikale Metriken gefunden wurden
CodeUnitBytesBytes je Zeichencode, die dem Content-Interpreter für die Schrift als Antwort gemeldet werden
OKTrue, wenn mindestens eine Dekodierstrategie brauchbar ist

Verwendungshinweise

Verwandte APIs