Функции за поднабор на CFF и OpenType шрифтове

Поддръжка на PDF филтри

 

Горе  EnableFontSubsetting  Съдържание

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

 

Delphi синтаксис

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 шрифтов товар на място, запазва идентификаторите на глифовете и заменя неизползваните CharStrings и подпрограми с минимални stub-ове. Това е помощната функция за извикващи, които вече са извлекли CFF таблица от шрифтов контейнер

 

HPDFSfntIsOTF разпознава sfnt контейнер, чиято версия е OTTO. HPDFOTFFindCFFTable намира вградената 'CFF ' таблица. HPDFSubsetOTFContainer комбинира тези стъпки, като подрязва вградената CFF таблица и връща OTF контейнер с оригиналното разположение на sfnt таблицата. HPDFExtractTTFPostScriptName чете name ID 6 от sfnt name таблицата и връща PostScript името на шрифта, когато е налично

 

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 покрива CJK / Indic / Arabic OpenType-CFF шрифтове; closure scan-ът проследява FD контекста на всеки запазен CharString, така че per-FD Local Subr INDEXes да се subset-ват независимо

 

Помощните функции на по-ниско ниво за декодиране на CFF цели числа, парсерите FDArray / FDSelect и скенерите за подпрограми са детайли по имплементацията зад тази публична помощна повърхност

 

Модули за парсване на Type 1 и CFF

HPDFType1Core, HPDFType1Glyphs, HPDFType1CFFHandler и HPDFType1PFBHandler предоставят четци за байтови масиви за многократна употреба, извличане на Type 1 glyph-outline команди, парсване на CFF Header / INDEX / dictionary / charset / encoding и помощници за Type 1 PFB метаданни и търсене на глифове. HPDFType1CB предоставя входна точка за парсер, удобна за C++Builder. Модулите са включени в пакетните проекти за Delphi и C++Builder, за да могат приложенията да инспектират Type 1 PFB и CFF данни без да пренаписват двоичните парсери

 

Виж също: EnableFontSubsetting, FontEmbedding, Поддръжка на PDF филтри