CFF and OpenType Font Subsetting Functions

PDF Filter Support

 

Đầu trang  EnableFontSubsetting  Nội dung

Các hàm cấp unit này cung cấp bề mặt public để kiểm tra font CFF, OpenType-CFF và sfnt mà pipeline nhúng font của HotPDF sử dụng. HotPDF cũng cung cấp các unit parser Type 1 PFB và CFF có thể tái sử dụng cho bên gọi cần kiểm tra font ở mức thấp hơn

 

Cú pháp 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;

 

Mô tả

HPDFSubsetCFF viết lại payload font CFF ngay tại chỗ, giữ nguyên glyph ID và thay các CharString cùng subroutine không dùng bằng các stub tối thiểu. Đây là helper dành cho bên gọi đã trích xuất sẵn một bảng CFF từ container font

 

HPDFSfntIsOTF phát hiện một sfnt container có version là OTTO. HPDFOTFFindCFFTable định vị bảng 'CFF ' nhúng. HPDFSubsetOTFContainer gộp các bước này bằng cách subset bảng CFF nhúng rồi trả về một OTF container vẫn giữ nguyên bố cục bảng sfnt gốc. HPDFExtractTTFPostScriptName đọc name ID 6 từ bảng name của sfnt và trả về tên PostScript của font khi có

 

Bộ subset nhận diện cả CFF theo tên (một Private DICT duy nhất, một Local Subr INDEX duy nhất) lẫn CFF theo CID (Top DICT ROS operator, FDArray gồm nhiều Private DICT của sub-font, map FDSelect glyph-to-FD, Local Subr INDEX riêng cho từng FD). Hỗ trợ CID bao phủ các font OpenType-CFF CJK / Indic / Arabic; lần quét closure theo dõi ngữ cảnh FD của từng CharString được giữ lại để các Local Subr INDEX theo từng FD được subset độc lập

 

Các bộ giải mã số nguyên CFF cấp thấp, parser FDArray / FDSelect, và bộ quét subroutine chỉ là chi tiết triển khai phía sau bề mặt helper public này

 

Unit parser Type 1 và CFF

HPDFType1Core, HPDFType1Glyphs, HPDFType1CFFHandler, và HPDFType1PFBHandler cung cấp các byte-array reader có thể tái sử dụng, trích xuất lệnh outline của glyph Type 1, parser CFF Header / INDEX / dictionary / charset / encoding, cùng metadata Type 1 PFB và helper tra cứu glyph. HPDFType1CB cung cấp một entry point parser thân thiện với C++Builder. Các unit này được đưa vào các project package Delphi và C++Builder để ứng dụng có thể kiểm tra dữ liệu Type 1 PFB và CFF mà không phải tự viết lại parser nhị phân

 

Xem thêm: EnableFontSubsetting, FontEmbedding, PDF Filter Support