THPDFFontDecoder Record
Guarda as tabelas de decodificação resolvidas e as métricas de largura de uma fonte PDF carregada, construído pela cadeia de fallback de decodificação de fontes
Declaração
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;
Unidade
HPDFTextExtraction
Campos
| Campo | Finalidade |
|---|---|
FontKey | Chave de recurso como /F1 que nomeia a fonte, mantida para diagnósticos |
Subtype | Subtipo do dicionário de fonte: Type0, Type1, TrueType, CIDFontType2 e afins |
Strategies | Conjunto de estratégias de fallback que foram populadas com sucesso |
ToUnicodeMap | CMap /ToUnicode interpretado, com entradas bfchar e bfrange, prioridade máxima |
EncodingMap | Stream /Encoding interpretado ou CMap nomeado |
PredefinedEncoding | Nome de encoding predefinido como WinAnsiEncoding |
CIDToGIDIdentity | True quando o CIDToGIDMap é Identity e nenhuma tabela explícita é necessária |
CIDToGIDs | Stream binário CIDToGIDMap expandido para um Word por CID |
CIDToUnicode | Tabela de CID para Unicode do fallback cid2code.txt |
GlyphNameUnicode | Tabela de nomes de glyph para Unicode com 256 entradas, usada pela recuperação de /Differences |
GIDToUnicode | cmap embutido invertido, de glyph ID para Unicode |
Widths | Avanços /Widths de fonte simples em 1/1000 em, indexados pelo código menos FirstChar |
FirstChar | Primeiro código de caractere suportado do array Widths |
LastChar | Último código de caractere suportado do array Widths |
CIDWidths | Faixas de largura CID do array /W do CIDFont |
CIDDefaultWidth | Avanço CID padrão, de /DW |
CIDVertWidths | Métricas verticais /W2 armazenadas como triplas [w1y v1x v1y] por CID ou faixa |
CIDVertDefaultAdvance | Deslocamento vertical padrão do w1y de /DW2, -1000 por padrão |
CIDVertDefaultOriginY | Origem vertical padrão do v1y de /DW2, 880 por padrão |
VerticalWriting | True quando métricas WMode 1 habilitam o ramo vertical do resolver |
Ascent | Ascent da fonte lido das métricas do font descriptor |
Descent | Descent da fonte lido das métricas do font descriptor |
HasVerticalMetrics | True quando métricas verticais foram encontradas para a fonte |
CodeUnitBytes | Bytes por código de caractere, respondido ao interpretador de conteúdo para a fonte |
OK | True quando pelo menos uma estratégia de decodificação é utilizável |
Notas de uso
- Construa com
HPDFBuildFontDecoder; o record simples mantém as fontes de uma página baratas, sem alocação de heap própria HPDFDecodeCharCodepercorre as estratégias em ordem de prioridade e retorna 0 em caso de miss; streams ausentes degradam silenciosamente para a próxima estratégia- Chame
HPDFCloneFontDecoderquando um decoder precisar sobreviver ao cache que o produziu, já que os arrays dinâmicos são compartilhados por referência