Запись THPDFFontDecoder

Хранит разрешённые таблицы декодирования и метрики ширин для одного загруженного шрифта PDF, построенные цепочкой fallback-декодирования шрифтов

Объявление

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;

Модуль

HPDFTextExtraction

Поля

ПолеНазначение
FontKeyКлюч ресурса вроде /F1, называющий шрифт; хранится для диагностики
SubtypeПодтип словаря шрифта: Type0, Type1, TrueType, CIDFontType2 и родственные
StrategiesНабор fallback-стратегий, которые удалось заполнить
ToUnicodeMapРазобранный CMap /ToUnicode с записями bfchar и bfrange; наивысший приоритет
EncodingMapРазобранный stream /Encoding или именованный CMap
PredefinedEncodingИмя предопределённой кодировки вроде WinAnsiEncoding
CIDToGIDIdentityTrue, когда CIDToGIDMap — Identity и явная таблица не нужна
CIDToGIDsДвоичный stream CIDToGIDMap, развёрнутый в один Word на CID
CIDToUnicodeТаблица CID → Unicode из fallback'а cid2code.txt
GlyphNameUnicode256-элементная таблица «имя глифа → Unicode», используемая при восстановлении через /Differences
GIDToUnicodeВстроенный cmap, обращённый от glyph ID к Unicode
WidthsШирины /Widths простого шрифта в 1/1000 em, индексируемые как код минус FirstChar
FirstCharПервый поддерживаемый код символа массива Widths
LastCharПоследний поддерживаемый код символа массива Widths
CIDWidthsДиапазоны ширин CID из массива /W CIDFont
CIDDefaultWidthШирина CID по умолчанию из /DW
CIDVertWidthsВертикальные метрики /W2, хранимые тройками [w1y v1x v1y] на CID или диапазон
CIDVertDefaultAdvanceВертикальное смещение по умолчанию из w1y в /DW2, по умолчанию -1000
CIDVertDefaultOriginYВертикальное начало по умолчанию из v1y в /DW2, по умолчанию 880
VerticalWritingTrue, когда метрики WMode 1 открывают вертикальную ветвь распознавателя
AscentВерхняя выносная шрифта (ascent) из метрик дескриптора шрифта
DescentНижняя выносная шрифта (descent) из метрик дескриптора шрифта
HasVerticalMetricsTrue, когда для шрифта найдены вертикальные метрики
CodeUnitBytesБайтов на код символа; сообщается интерпретатору content для этого шрифта
OKTrue, когда пригодна хотя бы одна стратегия декодирования

Примечания по использованию

Связанные API