Enregistrement THPDFFontDecoder

Porte les tables de décodage résolues et les métriques de largeur d'une police PDF chargée, construites par la chaîne de repli de décodage des polices

Déclaration

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

Champs

ChampObjectif
FontKeyClé de ressource comme /F1 nommant la police, conservée pour le diagnostic
SubtypeSous-type du dictionnaire de police : Type0, Type1, TrueType, CIDFontType2 et compagnie
StrategiesEnsemble des stratégies de repli remplies avec succès
ToUnicodeMapCMap /ToUnicode analysée avec ses entrées bfchar et bfrange, priorité la plus haute
EncodingMapFlux /Encoding analysé ou CMap nommée
PredefinedEncodingNom d'encodage prédéfini comme WinAnsiEncoding
CIDToGIDIdentityTrue quand le CIDToGIDMap vaut Identity et qu'aucune table explicite n'est nécessaire
CIDToGIDsFlux CIDToGIDMap binaire étendu en un Word par CID
CIDToUnicodeTable CID vers Unicode issue du repli cid2code.txt
GlyphNameUnicodeTable de 256 entrées nom de glyphe vers Unicode utilisée par la récupération /Differences
GIDToUnicodecmap embarquée inversée, de l'ID de glyphe vers Unicode
WidthsAvances /Widths de police simple en 1/1000 d'em, indexées par code moins FirstChar
FirstCharPremier code de caractère pris en charge du tableau Widths
LastCharDernier code de caractère pris en charge du tableau Widths
CIDWidthsPlages de largeurs CID du tableau /W de la CIDFont
CIDDefaultWidthAvance CID par défaut issue de /DW
CIDVertWidthsMétriques verticales /W2 stockées en triplets [w1y v1x v1y] par CID ou par plage
CIDVertDefaultAdvanceDéplacement vertical par défaut issu du w1y de /DW2, -1000 par défaut
CIDVertDefaultOriginYOrigine verticale par défaut issue du v1y de /DW2, 880 par défaut
VerticalWritingTrue quand les métriques WMode 1 conditionnent la branche verticale du résolveur
AscentAscendante de la police lue dans les métriques du descripteur de police
DescentDescendante de la police lue dans les métriques du descripteur de police
HasVerticalMetricsTrue quand des métriques verticales ont été trouvées pour la police
CodeUnitBytesOctets par code de caractère, communiqués à l'interpréteur de contenu pour la police
OKTrue quand au moins une stratégie de décodage est exploitable

Notes d'utilisation

API associées