Font decompression
フォント展開(Font decompression)とは、PDF文書内で圧縮されているフォントデータを抽出し、再構築するプロセスです。
フォント展開(Font decompression)とは、PDF文書内で圧縮されているフォントデータを抽出し、再構築するプロセスです。PDFファイルは一般的にファイルサイズを削減するために圧縮アルゴリズムを使用しており、これらの文書に埋め込まれたフォントも ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で規定されているように、しばしばこのような圧縮の対象となります。PDFがレンダリングまたは処理される際、適切なテキスト表示に必要なグリフ定義、メトリクス、その他のタイポグラフィ情報にアクセスするために、フォントデータを展開する必要があります。
フォント展開は、PDFのフォント辞書および関連するフォントディスクリプタオブジェクト内に保存されている圧縮フォントストリームの復号化を特に指します。一般的なPDFストリーム展開とは異なり、フォント展開はType 1、TrueType、OpenType、CFF(Compact Font Format)などのさまざまなフォント形式を処理する必要があり、これらはそれぞれFlateDecodeなどのフィルタや ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているその他の圧縮方法を使用して圧縮形式で埋め込まれている場合があります。
フォント展開は、フォントサブセット化(文字セットを削減する)やフォント抽出(フォントファイルを取得する)とは異なります。これは、フォントデータがレンダリング、テキスト抽出、またはアクセシビリティ機能のために解析および使用される前に発生する前提条件となるステップです。展開されたフォントデータにより、文字の形状と間隔を定義する実際のフォントプログラムのバイトが明らかになります。
PDF処理ライブラリを扱う開発者やPDF準拠アプリケーションを構築する開発者にとって、フォント展開を理解することはいくつかの理由で非常に重要です。第一に、適切なフォント展開は、正確なテキストレンダリングと、文書が異なるプラットフォームやビューアで意図したとおりに表示されることを保証するために不可欠です。フォントデータを正しく展開しないと、アプリケーションがグリフのレンダリングに失敗したり、誤ったフォントを代替したりして、視覚的な忠実性が損なわれる可能性があります。
第二に、フォント展開はアクセシビリティワークフローに影響を与えます。 ( Citation: N.A., 2014 (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html ) などの標準に準拠したアクセシブルなPDFを作成する際、開発者は支援技術が文字マッピングとUnicode値にアクセスできるように、フォント情報が適切に展開され利用可能であることを確認する必要があります。第三に、パフォーマンスの最適化には効率的な展開ルーチンが必要です。特にサーバーサイドレンダリングのシナリオや大量の文書を処理する際に、フォントは文書処理中に複数回展開される可能性があるためです。
フォント展開プロセスは通常、以下のステップに従います:
ストリームの識別:PDFパーサーはPDFのオブジェクト階層内のフォントオブジェクトを特定し、圧縮データを含むフォントストリームと、それに適用されているフィルタを識別します。
フィルタの適用:展開エンジンは、ストリーム辞書の/Filterエントリで指定された適切な展開アルゴリズムを適用します。一般的なフィルタには、/FlateDecode(ZIP/deflate圧縮)、/LZWDecode、/ASCIIHexDecodeなどがあります。
フォント形式の解析:展開後、生のフォントデータはそのフォント形式仕様に従って解析されます。TrueTypeフォントの場合、これはテーブルとグリフデータの読み取りを意味し、Type 1フォントの場合、PostScriptベースのフォントプログラムの処理を伴います。
キャッシング:ほとんどのPDFプロセッサは、冗長な展開操作を避けるために、展開されたフォントデータをメモリにキャッシュします。同じフォントが複数ページの文書全体で参照される可能性があるためです。
フォント展開の複雑さは、フォントの一部のみが埋め込まれているフォントサブセットを扱う場合や、基本的なストリーム展開以外の追加処理を必要とする特殊なエンコーディングスキームをフォントが使用している場合に増大します。
- Font embedding(フォント埋め込み) – PDF文書内に完全なフォントファイルまたはサブセットフォントファイルを含めるプロセス
- Stream filters(ストリームフィルタ) – PDFデータストリームに適用される圧縮およびエンコーディング方法
- Font subsetting(フォントサブセット化) – 文書内で使用されている文字のみを含めるように埋め込みフォントを削減すること
- Glyph rendering(グリフレンダリング) – フォントグリフ記述を画面または印刷上の可視文字に変換すること
- Font descriptor(フォントディスクリプタ) – 埋め込みフォントのメトリクスとプロパティを含むPDFオブジェクト
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
- (N.A.) (2014)
- (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html
