توابع زیرمجموعه‌سازی قلم CFF و OpenType

پشتیبانی از فیلتر PDF

 

بالا  EnableFontSubsetting  فهرست

این توابع در سطح unit، سطح عمومی بازرسی قلم CFF، OpenType-CFF و sfnt را که خط لوله قلم توکار HotPDF از آن استفاده می‌کند در اختیار می‌گذارند. HotPDF همچنین unitهای قابل‌بازاستفاده برای parserهای Type 1 PFB و CFF را برای callerهایی که به بازرسی سطح پایین‌تر قلم نیاز دارند ارائه می‌کند

 

نحو 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 payload قلم CFF را در همان محل بازنویسی می‌کند، شناسه‌های glyph را حفظ می‌کند و CharStringها و subroutineهای استفاده‌نشده را با stubهای حداقلی جایگزین می‌کند. این helper برای callerهایی است که از قبل جدول CFF را از یک container قلم استخراج کرده‌اند

 

HPDFSfntIsOTF یک container sfnt را که نسخه آن OTTO است تشخیص می‌دهد. HPDFOTFFindCFFTable جدول تع嵌 شده CFF را پیدا می‌کند. HPDFSubsetOTFContainer این مراحل را با زیرمجموعه‌سازی جدول CFF تع嵌 شده و برگرداندن یک container OTF با حفظ چیدمان اصلی جدول‌های sfnt ترکیب می‌کند. HPDFExtractTTFPostScriptName شناسه نام 6 را از جدول name در sfnt می‌خواند و در صورت وجود، نام PostScript قلم را برمی‌گرداند

 

زیرمجموعه‌ساز هم CFF نام‌کلیددار (یک Private DICT و یک Local Subr INDEX) و هم CFF CID-کلیددار (عملگر Top DICT ROS، FDArray شامل چند Private DICT قلم فرعی، نگاشت glyph به FD در FDSelect و Local Subr INDEX جداگانه برای هر FD) را تشخیص می‌دهد. پشتیبانی CID قلم‌های OpenType-CFF برای CJK / Indic / Arabic را پوشش می‌دهد؛ پیمایش closure زمینه FD هر CharString نگه‌داشته‌شده را دنبال می‌کند تا Local Subr INDEXهای هر FD به‌طور مستقل زیرمجموعه شوند

 

decoderهای عدد صحیح CFF در سطح پایین‌تر، parserهای FDArray / FDSelect و scannerهای subroutine جزئیات پیاده‌سازی پشت این سطح عمومی helper هستند

 

واحدهای parser Type 1 و CFF

HPDFType1Core، HPDFType1Glyphs، HPDFType1CFFHandler و HPDFType1PFBHandler readerهای قابل‌بازاستفاده برای byte array، استخراج فرمان‌های outline glyph در Type 1، و parserهای Header / INDEX / dictionary / charset / encoding در CFF، به‌همراه metadata و helperهای lookup glyph برای Type 1 PFB را فراهم می‌کنند. HPDFType1CB یک نقطه ورود parser سازگار با C++Builder ارائه می‌کند. این unitها در پروژه‌های package مربوط به Delphi و C++Builder گنجانده شده‌اند تا برنامه‌ها بتوانند داده‌های Type 1 PFB و CFF را بدون بازنویسی parserهای دودویی بازرسی کنند

 

همچنین ببینید: EnableFontSubsetting, FontEmbedding, پشتیبانی از فیلتر PDF