Font dictionary
Font dictionaryは、PDF文書内で使用されるフォントリソースのプロパティと特性を定義する、PDFのコアデータ構造です。
Font dictionaryは、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 ) で規定されているように、各font dictionaryには、フォントのタイプ、エンコーディング、文字メトリクス、その他テキストの適切なレンダリングに必要な属性を記述する必須エントリとオプションエントリが含まれています。Font dictionaryにより、PDFプロセッサは、フォントが埋め込まれているか外部参照されているかに関わらず、テキストコンテンツを正しく表示、測定、操作できます。
Font dictionaryは、フォントリソースの完全な仕様として機能するPDF dictionary objectです。最低限、Typeエントリ(/Fontに設定)と、フォントタイプ(Type1、TrueType、Type0、Type3、CIDFontなど)を識別するSubtypeエントリを含む必要があります。これらの必須エントリに加えて、font dictionaryには、文字エンコーディングスキーム、グリフ幅、font descriptor、埋め込み情報を定義する追加のキーが含まれます。
Font dictionaryはフォントファイル自体とは異なります。フォントファイル(TrueTypeやOpenTypeファイルなど)には実際のグリフアウトラインとメトリクスが含まれますが、font dictionaryはPDFプロセッサに対して、PDF内でそのフォントデータをどのように解釈・使用するかを指示するラッパーとして機能します。異なるエンコーディングスキームやサブセットが使用される場合、単一のフォントファイルが複数のfont dictionaryから参照されることがあります。
Font dictionaryの構造と内容は、フォントサブタイプによって大きく異なります。単純フォント(Type1、TrueType、Type3)は直接的なエンコーディングスキームを使用しますが、複合フォント(Type0)はマルチバイト文字セットを処理するために、下位のCIDFont dictionaryを含むより複雑なdictionary構造を必要とします。
Font dictionaryは、PDFテキスト操作を扱う開発者にとって重要です。なぜなら、テキストレンダリングの正確性、文書のアクセシビリティ、ファイルサイズに直接影響するためです。Font dictionaryの理解は以下の場合に不可欠です:
- PDFドキュメントのプログラム生成:開発者は、異なるPDFビューアやプラットフォーム間でテキストが正しく表示されるよう、適切に構造化されたfont dictionaryを作成する必要があります
- テキストコンテンツの抽出:Font dictionaryを解析することで、文字コードをUnicodeテキストに変換するために必要なエンコーディングマッピングが明らかになります
- アクセシビリティ準拠の確保: ( 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マッピングが必要であり、これは正しいfont dictionary設定に依存します
- ファイルサイズの最適化:フォントのサブセット化と埋め込み戦略は、font dictionaryの設定によって制御されます
不適切に設定されたfont dictionaryは、文字の欠落、間違ったグリフの表示、または完全なレンダリング失敗を引き起こす可能性があります。PDF生成ライブラリや処理ツールを構築する開発者にとって、font dictionary構造の習得は必須です。
Font dictionaryは、通常、ページまたは文書のResources dictionary内の/Fontエントリに格納されるリソースオブジェクトとして機能します。PDFプロセッサがコンテンツストリーム内のテキスト表示オペレータに遭遇すると、font dictionaryを参照して、指定された文字をどのようにレンダリングするかを決定します。
主要なdictionaryエントリには以下が含まれます:
- Type:常に
/Fontで、これがfont dictionaryであることを識別します - Subtype:フォントタイプを指定します(例:
/Type1、/TrueType、/Type0、/Type3) - BaseFont:フォントのPostScript名(ほとんどのフォントタイプで使用)
- Encoding:文字からグリフへのマッピングスキームを定義します
- FontDescriptor:メトリクスと埋め込み情報を含むfont descriptor dictionaryを参照します
- ToUnicode:テキスト抽出とアクセシビリティのために文字コードをUnicode値にマッピングするオプションのCMapストリーム
Type0サブタイプを使用する複合フォントの場合、font dictionaryには1つ以上のCIDFont dictionaryを参照するDescendantFonts配列が含まれます。これらのCIDFont dictionaryには、中国語、日本語、韓国語などのマルチバイト文字セットのレンダリングに必要な独自のfont descriptorと文字コレクション情報が含まれます。
Font dictionaryで指定されたエンコーディングは、コンテンツストリーム内のバイト値が実際のグリフにどのようにマッピングされるかを決定します。WinAnsiEncodingやMacRomanEncodingなどの標準エンコーディングは事前定義されていますが、カスタムEncoding dictionaryにより特殊な文字マッピングが可能になります。
フォント埋め込みは、FontDescriptorのFontFile、FontFile2、またはFontFile3エントリを通じて制御され、これらには実際のフォントプログラムデータを含めることができます。これにより、フォントがインストールされていないシステムでも、文書が同一に表示されることが保証されます。
- Font descriptor – フォントメトリクス、埋め込み情報、イタリック角度やステム幅などの特性を含むdictionary
- Character encoding – バイト値をフォント内の特定のグリフに変換するマッピングスキーム
- CIDFont – 大規模な文字セットをサポートする複合フォントに使用される特殊なfont dictionaryタイプ
- Font embedding – 一貫したレンダリングを保証するためにPDF内にフォントプログラムデータを含めるプロセス
- ToUnicode CMap – アクセシビリティとテキスト抽出のために文字コードをUnicode値に変換するマッピングテーブル
- (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
