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
| Pole | Przeznaczenie |
|---|---|
FontKey | Klucz zasobu, na przykład /F1, nazywający font, trzymany dla diagnostyki |
Subtype | Podtyp słownika fontu: Type0, Type1, TrueType, CIDFontType2 i pozostali |
Strategies | Zbiór strategii awaryjnych, które zostały zapełnione pomyślnie |
ToUnicodeMap | Sparsowana CMap /ToUnicode z wpisami bfchar i bfrange, najwyższy priorytet |
EncodingMap | Sparsowany strumień /Encoding albo nazwana CMap |
PredefinedEncoding | Nazwa predefiniowanego kodowania, na przykład WinAnsiEncoding |
CIDToGIDIdentity | True, gdy CIDToGIDMap to Identity i jawna tabela nie jest potrzebna |
CIDToGIDs | Binarny strumień CIDToGIDMap rozwinięty do jednego Word na CID |
CIDToUnicode | Tabela CID na Unicode z awaryjnego cid2code.txt |
GlyphNameUnicode | 256-elementowa tabela nazw glifów na Unicode używana przez odtwarzanie /Differences |
GIDToUnicode | Osadzona cmap odwrócona z identyfikatora glifu na Unicode |
Widths | Przesunięcia /Widths fontu prostego w 1/1000 em, indeksowane kodem minus FirstChar |
FirstChar | Pierwszy obsługiwany kod znaku tablicy Widths |
LastChar | Ostatni obsługiwany kod znaku tablicy Widths |
CIDWidths | Zakresy szerokości CID z tablicy /W CIDFont |
CIDDefaultWidth | Domyślne przesunięcie CID z /DW |
CIDVertWidths | Pionowe metryki /W2 przechowywane jako trójki [w1y v1x v1y] per CID albo zakres |
CIDVertDefaultAdvance | Domyślne pionowe przemieszczenie z w1y /DW2, domyślnie -1000 |
CIDVertDefaultOriginY | Domyślny pionowy początek z v1y /DW2, domyślnie 880 |
VerticalWriting | True, gdy metryki WMode 1 warunkują pionową gałąź resolvera |
Ascent | Wznios fontu odczytany z metryk deskryptora fontu |
Descent | Zejście fontu odczytane z metryk deskryptora fontu |
HasVerticalMetrics | True, gdy dla fontu znaleziono metryki pionowe |
CodeUnitBytes | Liczba bajtów na kod znaku, raportowana interpreterowi treści dla tego fontu |
OK | True, gdy przynajmniej jedna strategia dekodowania jest użyteczna |
Uwagi dotyczące użycia
- Buduj przez
HPDFBuildFontDecoder; zwykły rekord trzyma fonty całej strony tanio, bez własnej alokacji na stercie HPDFDecodeCharCodeprzechodzi strategie w kolejności priorytetów i zwraca 0 przy chybieniu; brakujące strumienie po cichu degradują do następnej strategii- Wywołuj
HPDFCloneFontDecoder, gdy dekoder ma przeżyć pamięć podręczną, która go wytworzyła, ponieważ tablice dynamiczne są współdzielone przez referencję