CFF and OpenType Font Subsetting Functions

PDF Filter Support

 

Вверх  EnableFontSubsetting  Содержание

Эти функции уровня модуля раскрывают публичную поверхность subsetting для CFF и OpenType-CFF fonts, используемую pipeline встроенных шрифтов HotPDF. HotPDF также поставляет переиспользуемые модули парсеров Type 1 PFB и CFF для вызывающего кода, которому нужна низкоуровневая проверка шрифтов

 

Delphi syntax

function HPDFSubsetCFF(const CFFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes;

function HPDFSfntIsOTF(const Data: TBytes): Boolean;

function HPDFOTFFindCFFTable(const Data: TBytes; out TableOff: Cardinal; out TableLen: Cardinal): Boolean;

function HPDFSubsetOTFContainer(const OTFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes;

function HPDFExtractTTFPostScriptName(const Data: TBytes): AnsiString;

 

Описание

HPDFSubsetCFF переписывает CFF font payload на месте, сохраняя glyph IDs и заменяя unused CharStrings и subroutines минимальными stubs. Это helper для callers, которые уже извлекли CFF table из font container

 

HPDFSfntIsOTF обнаруживает sfnt container с версией OTTO. HPDFOTFFindCFFTable находит embedded 'CFF ' table. HPDFSubsetOTFContainer объединяет эти шаги, подмножая embedded CFF table и возвращая OTF container с сохраненной original sfnt table layout

 

Subsetter распознает как name-keyed CFF (single Private DICT, single Local Subr INDEX), так и CID-keyed CFF (Top DICT ROS operator, FDArray из нескольких sub-font Private DICTs, FDSelect glyph-to-FD map, per-FD Local Subr INDEXes). CID support с v2.40.0 покрывает CJK / Indic / Arabic OpenType-CFF fonts; closure scan отслеживает FD context каждого kept CharString, поэтому per-FD Local Subr INDEXes подмножаются независимо

 

Низкоуровневые CFF-декодеры целых чисел, парсеры FDArray / FDSelect и сканеры подпрограмм являются деталями реализации за этой публичной поверхностью помощников

HPDFExtractTTFPostScriptName читает name ID 6 из таблицы sfnt name и возвращает PostScript-имя шрифта, если оно есть

 

Type 1 and CFF parser units

HPDFType1Core, HPDFType1Glyphs, HPDFType1CFFHandler и HPDFType1PFBHandler предоставляют reusable byte-array readers, Type 1 glyph-outline command extraction, CFF Header / INDEX / dictionary / charset / encoding parsing и Type 1 PFB metadata plus glyph lookup helpers. HPDFType1CB предоставляет C++Builder-friendly parser entry point. Units включены в Delphi и C++Builder package projects, чтобы applications могли проверять Type 1 PFB и CFF data без повторной реализации binary parsers

 

См. также: EnableFontSubsetting, FontEmbedding, PDF Filter Support