THPDFFontDecoder Record
Bevat de opgeloste decodeertabellen en breedtemetrics voor één geladen PDF-font, opgebouwd door de fallbackketen voor fontdecoding
Declaratie
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;
Eenheid
HPDFTextExtraction
Velden
| Veld | Doel |
|---|---|
FontKey | Resource-sleutel zoals /F1 die het font benoemt, bewaard voor diagnostiek |
Subtype | Fontdictionary-subtype: Type0, Type1, TrueType, CIDFontType2 en verwanten |
Strategies | Set fallbackstrategieën die met succes zijn gevuld |
ToUnicodeMap | Geparseerde /ToUnicode-CMap met bfchar- en bfrange-entries, hoogste prioriteit |
EncodingMap | Geparseerde /Encoding-stream of benoemde CMap |
PredefinedEncoding | Vooraf gedefinieerde encodingnaam zoals WinAnsiEncoding |
CIDToGIDIdentity | True wanneer de CIDToGIDMap Identity is en er geen expliciete tabel nodig is |
CIDToGIDs | Binaire CIDToGIDMap-stream, uitgevouwen naar één Word per CID |
CIDToUnicode | CID-naar-Unicode-tabel vanuit de cid2code.txt-fallback |
GlyphNameUnicode | Glyphnaam-naar-Unicode-tabel met 256 entries, gebruikt door /Differences-herstel |
GIDToUnicode | Ingesloten cmap, omgekeerd van glyph-ID naar Unicode |
Widths | /Widths-breedtes van simple fonts in 1/1000 em, geïndexeerd op code min FirstChar |
FirstChar | Eerste ondersteunde charcode van de Widths-array |
LastChar | Laatste ondersteunde charcode van de Widths-array |
CIDWidths | CID-breedtebereiken uit de /W-array van de CIDFont |
CIDDefaultWidth | Standaard CID-breedte vanuit /DW |
CIDVertWidths | Verticale /W2-metrics, bewaard als [w1y v1x v1y]-tripels per CID of bereik |
CIDVertDefaultAdvance | Standaard verticale verplaatsing vanuit /DW2 w1y, standaard -1000 |
CIDVertDefaultOriginY | Standaard verticale oorsprong vanuit /DW2 v1y, standaard 880 |
VerticalWriting | True wanneer WMode 1-metrics de verticale tak van de resolver aansturen |
Ascent | Font-ascent, gelezen uit de fontdescriptor-metrics |
Descent | Font-descent, gelezen uit de fontdescriptor-metrics |
HasVerticalMetrics | True wanneer er verticale metrics voor het font zijn gevonden |
CodeUnitBytes | Bytes per charcode, aan de content-interpreter gemeld voor dit font |
OK | True wanneer minstens één decodeerstrategie bruikbaar is |
Gebruiksopmerkingen
- Bouw met
HPDFBuildFontDecoder; het kale record houdt een pagina vol fonts goedkoop, zonder eigen heapallocatie HPDFDecodeCharCodedoorloopt de strategieën in prioriteitsvolgorde en geeft 0 terug bij een miss; ontbrekende streams vallen geruisloos terug op de volgende strategie- Roep
HPDFCloneFontDecoderaan wanneer een decoder de cache die hem produceerde moet overleven, want de dynamische arrays worden per referentie gedeeld