THPDFFontDecoder Record

Przechowuje rozwiązane tabele dekodowania i metryki szerokości dla jednego załadowanego fontu PDF, budowane przez łańcuch awaryjny dekodowania fontów

Deklaracja

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;

Jednostka

HPDFTextExtraction

Pola

PolePrzeznaczenie
FontKeyKlucz zasobu, na przykład /F1, nazywający font, trzymany dla diagnostyki
SubtypePodtyp słownika fontu: Type0, Type1, TrueType, CIDFontType2 i pozostali
StrategiesZbiór strategii awaryjnych, które zostały zapełnione pomyślnie
ToUnicodeMapSparsowana CMap /ToUnicode z wpisami bfchar i bfrange, najwyższy priorytet
EncodingMapSparsowany strumień /Encoding albo nazwana CMap
PredefinedEncodingNazwa predefiniowanego kodowania, na przykład WinAnsiEncoding
CIDToGIDIdentityTrue, gdy CIDToGIDMap to Identity i jawna tabela nie jest potrzebna
CIDToGIDsBinarny strumień CIDToGIDMap rozwinięty do jednego Word na CID
CIDToUnicodeTabela CID na Unicode z awaryjnego cid2code.txt
GlyphNameUnicode256-elementowa tabela nazw glifów na Unicode używana przez odtwarzanie /Differences
GIDToUnicodeOsadzona cmap odwrócona z identyfikatora glifu na Unicode
WidthsPrzesunięcia /Widths fontu prostego w 1/1000 em, indeksowane kodem minus FirstChar
FirstCharPierwszy obsługiwany kod znaku tablicy Widths
LastCharOstatni obsługiwany kod znaku tablicy Widths
CIDWidthsZakresy szerokości CID z tablicy /W CIDFont
CIDDefaultWidthDomyślne przesunięcie CID z /DW
CIDVertWidthsPionowe metryki /W2 przechowywane jako trójki [w1y v1x v1y] per CID albo zakres
CIDVertDefaultAdvanceDomyślne pionowe przemieszczenie z w1y /DW2, domyślnie -1000
CIDVertDefaultOriginYDomyślny pionowy początek z v1y /DW2, domyślnie 880
VerticalWritingTrue, gdy metryki WMode 1 warunkują pionową gałąź resolvera
AscentWznios fontu odczytany z metryk deskryptora fontu
DescentZejście fontu odczytane z metryk deskryptora fontu
HasVerticalMetricsTrue, gdy dla fontu znaleziono metryki pionowe
CodeUnitBytesLiczba bajtów na kod znaku, raportowana interpreterowi treści dla tego fontu
OKTrue, gdy przynajmniej jedna strategia dekodowania jest użyteczna

Uwagi dotyczące użycia

Powiązane API