CFF および Open型 フォント サブセット化関数

PDF フィルターサポート

 

トップへ  EnableFontSubsetting  目次

これらのユニットレベルの関数は、HotPDFの埋め込みフォントパイプラインで使用される、パブリックなCFF、Open型-CFF、およびsfntのフォント検査サーフェスを公開します。HotPDFには、より低レベルのフォント検査を必要とする呼び出し元のために、再利用可能な型 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 HPDFExtractTTFPostScript名前(const Data: TBytes): AnsiString;

 

説明

HPDFSubsetCFF は、CFFフォントのペイロードをインプレースで書き換え、グリフ ID を保持し、未使用の CharString とサブルーチンを最小限のスタブに置き換えます。これは、フォントコンテナからCFFテーブルをすでに抽出している呼び出し元向けのヘルパーです。

 

HPDFSfntIsOTF は、バージョンが OTTO である sfnt コンテナを検出します。HPDFOTFFindCFFTable は、埋め込まれた 'CFF ' テーブルを見つけます。HPDFSubsetOTFContainer は、埋め込まれた CFF テーブルをサブセット化し、元の sfnt テーブルのレイアウトが保持された OTF コンテナを返すことで、これらのステップを組み合わせます。HPDFExtractTTFPostScript名前 は sfnt の name テーブルから名前 ID 6 を読み取り、存在する場合は PostScript フォント名を返します。

 

サブセッターは、名前キーのCFF(単一の Private DICT、単一の Local Subr INDEX)と、CID キーのCFF(トップへ DICT ROS 演算子、複数のサブフォント Private DICT の FDArray、FDSelect のグリフからFDへのマップ、FDごとの Local Subr INDEX)の両方を認識します。CIDのサポートは、CJK / インド系 / アラビア語の Open型-CFF フォントをカバーします。クロージャスキャンは、保持された各 CharString のFDコンテキストを追跡するため、FDごとの Local Subr INDEX は独立してサブセット化されます。

 

低レベルの CFF 整数デコーダ、FDArray / FDSelect パーサー、およびサブルーチンスキャナーは、このパブリックヘルパーサーフェスの背後にある実装の詳細です。

 

型 1 および CFF パーサーユニット

HPDF型1CoreHPDF型1GlyphsHPDF型1CFFHandler、および HPDF型1PFBHandler は、再利用可能なバイト配列リーダー、型 1 グリフアウトラインコマンドの抽出、CFF ヘッダー / INDEX / 辞書 / 文字セット / エンコーディングの解析、および 型 1 PFB メタデータとグリフルックアップヘルパーを提供します。HPDF型1CB は C++Builder 向けのパーサーエントリポイントを提供します。これらのユニットは Delphi および C++Builder のパッケージプロジェクトに含まれているため、アプリケーションはバイナリパーサーを再実装することなく、型 1 PFB および CFF データを検査できます。

 

See also: EnableFontSubsetting, フォントの埋め込み, PDF フィルターサポート