Registro THPDFFontDecoder
Contiene las tablas de decodificación resueltas y las métricas de anchura de una fuente PDF cargada, construidas por la cadena de alternativas de decodificación de fuentes
Declaración
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;
Unidad
HPDFTextExtraction
Campos
| Campo | Propósito |
|---|---|
FontKey | Clave de recurso como /F1 que nombra la fuente, conservada para diagnósticos |
Subtype | Subtipo del diccionario de fuente: Type0, Type1, TrueType, CIDFontType2 y afines |
Strategies | Conjunto de estrategias alternativas que se rellenaron con éxito |
ToUnicodeMap | CMap /ToUnicode analizado con entradas bfchar y bfrange, el de mayor prioridad |
EncodingMap | Flujo /Encoding analizado o CMap nombrado |
PredefinedEncoding | Nombre de codificación predefinida como WinAnsiEncoding |
CIDToGIDIdentity | True cuando el CIDToGIDMap es Identity y no hace falta una tabla explícita |
CIDToGIDs | Flujo binario CIDToGIDMap expandido a un Word por CID |
CIDToUnicode | Tabla de CID a Unicode de la alternativa cid2code.txt |
GlyphNameUnicode | Tabla de 256 entradas de nombre de glifo a Unicode usada por la recuperación de /Differences |
GIDToUnicode | cmap incrustado invertido, de ID de glifo a Unicode |
Widths | Avances /Widths de fuente simple en 1/1000 de em, indexados por código menos FirstChar |
FirstChar | Primer código de carácter admitido del array Widths |
LastChar | Último código de carácter admitido del array Widths |
CIDWidths | Rangos de anchuras CID del array /W de la CIDFont |
CIDDefaultWidth | Avance CID por defecto tomado de /DW |
CIDVertWidths | Métricas verticales /W2 guardadas como tripletas [w1y v1x v1y] por CID o por rango |
CIDVertDefaultAdvance | Desplazamiento vertical por defecto del w1y de /DW2, -1000 por defecto |
CIDVertDefaultOriginY | Origen vertical por defecto del v1y de /DW2, 880 por defecto |
VerticalWriting | True cuando las métricas WMode 1 habilitan la rama vertical del resolvedor |
Ascent | Ascendente de la fuente leído de las métricas del descriptor de fuente |
Descent | Descendente de la fuente leído de las métricas del descriptor de fuente |
HasVerticalMetrics | True cuando se encontraron métricas verticales para la fuente |
CodeUnitBytes | Bytes por código de carácter, dato que se responde al intérprete de contenido para la fuente |
OK | True cuando al menos una estrategia de decodificación es utilizable |
Notas de uso
- Se construye con
HPDFBuildFontDecoder; el registro plano mantiene baratas las fuentes de toda una página sin asignación de heap propia HPDFDecodeCharCoderecorre las estrategias en orden de prioridad y devuelve 0 si no hay coincidencia; los flujos ausentes degradan silenciosamente a la siguiente estrategia- Llame a
HPDFCloneFontDecodercuando un decodificador deba sobrevivir a la caché que lo produjo, ya que los arrays dinámicos se comparten por referencia