CFF and OpenType Font Subsetting Functions

PDF Filter Support

 

맨 위  EnableFontSubsetting  목차

이 unit-level function은 HotPDF embedded font pipeline이 사용하는 public CFF, OpenType-CFF, sfnt font-inspection surface를 노출합니다. HotPDF는 lower-level font inspection이 필요한 호출자를 위해 reusable Type 1 PFB 및 CFF parser unit도 제공합니다

 

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는 glyph ID를 보존하면서 CFF font payload를 in place로 rewrite하고, 사용되지 않는 CharStrings 및 subroutine을 minimal stub으로 바꿉니다. Font container에서 CFF table을 이미 추출한 호출자를 위한 helper입니다

 

HPDFSfntIsOTF는 version이 OTTO인 sfnt container를 감지합니다. HPDFOTFFindCFFTable은 embedded 'CFF ' table을 찾습니다. HPDFSubsetOTFContainer는 embedded CFF table을 subset하고 original sfnt table layout을 보존한 OTF container를 반환하여 이 단계를 결합합니다. HPDFExtractTTFPostScriptName은 sfnt name table에서 name ID 6을 읽고 존재하는 경우 PostScript font name을 반환합니다

 

Subsetter는 name-keyed CFF(single Private DICT, single Local Subr INDEX)와 CID-keyed CFF(Top DICT ROS operator, 여러 sub-font Private DICT의 FDArray, FDSelect glyph-to-FD map, per-FD Local Subr INDEX)를 모두 인식합니다. CID support는 CJK / Indic / Arabic OpenType-CFF font를 포함합니다. Closure scan은 유지되는 각 CharString의 FD context를 추적하므로 per-FD Local Subr INDEX가 독립적으로 subset됩니다

 

Lower-level CFF integer decoder, FDArray / FDSelect parser, subroutine scanner는 이 public helper surface 뒤의 implementation detail입니다

 

Type 1 and CFF parser units

HPDFType1Core, HPDFType1Glyphs, HPDFType1CFFHandler, HPDFType1PFBHandler는 reusable byte-array reader, Type 1 glyph-outline command extraction, CFF Header / INDEX / dictionary / charset / encoding parsing, Type 1 PFB metadata와 glyph lookup helper를 제공합니다. HPDFType1CB는 C++Builder-friendly parser entry point를 제공합니다. 이 unit들은 Delphi 및 C++Builder package project에 포함되므로 application은 binary parser를 다시 구현하지 않고 Type 1 PFB 및 CFF data를 inspect할 수 있습니다

 

참조: EnableFontSubsetting, FontEmbedding, PDF Filter Support