FontMapping
FontMappingは、Apache PDFBoxライブラリにおいて、PDF文書内で参照されるフォントと、システム上で利用可能な実際のフォントリソースまたはPDF内に埋め込まれたフォントリソースとの間のマッピングを処理するクラスです。
FontMappingは、Apache PDFBoxライブラリにおいて、PDF文書内で参照されるフォントと、システム上で利用可能な実際のフォントリソースまたはPDF内に埋め込まれたフォントリソースとの間のマッピングを処理するクラスです。このコンポーネントは、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 ) に従って様々な方法でフォントを参照できるため、正確なテキストレンダリングおよび抽出に不可欠です。FontMappingは、PDFが特定のフォントを指定した際に、PDFBoxが処理操作のために適切なフォントデータを検索して使用できるようにします。
Apache PDFBoxにおけるFontMappingは、PDF文書内のフォント参照を実際に使用可能なフォントオブジェクトに解決するプログラム上のブリッジです。アプリケーションが明示的にフォントファイルを扱う直接的なフォント処理とは異なり、FontMappingは抽象化レイヤーで動作し、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仕様で定義されているフォント記述子、文字マッピング、エンコーディングスキームを使用して、テキストがどのように解釈されるべきかの一貫した表現を作成します。
JavaアプリケーションでPDF文書を扱う開発者にとって、FontMappingは極めて重要です。なぜなら、不適切なフォント処理は、テキスト抽出エラーやレンダリングの不整合の最も一般的な原因の一つだからです。インデックス作成、アクセシビリティ変換(PDF/UA準拠文書の作成 ( 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マッピングが保持されることを保証します。
適切なフォントマッピングがないと、アプリケーションは文字化けしたテキスト抽出、文字の欠落、不正確なグリフから文字への変換などの問題に遭遇する可能性があります。これは、Tagged PDF ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) を扱う場合に特に重要です。Tagged PDFでは、アクセシビリティ機能やセマンティック構造に正確なテキスト表現が不可欠です。FontMappingは、多様なフォント埋め込み戦略を持つ様々なPDF文書全体でフォント解決の一貫したインターフェースを提供することで、開発者がこれらの落とし穴を回避できるようにします。
FontMappingは、複数ステップの解決プロセスを通じて動作します。PDFBoxがPDFのコンテンツストリーム内でフォント参照に遭遇すると、FontMappingクラスはまずフォント辞書を調べて、そのフォントが埋め込まれているか、標準PDFフォント(HelveticaやTimes Romanなど)を参照しているか、または外部システムフォントを参照しているかを判断します。埋め込みフォントの場合は、PDFのフォントストリームからフォントデータを抽出し、内部表現を作成します。
フォントが埋め込まれていない場合、FontMappingはシステムのフォントレジストリまたはPDFBoxの組み込みフォントリソースから適切な代替フォントを検索しようとします。この置換プロセスでは、ファミリー名、ウェイト、スタイル、文字セットなどのフォント特性が考慮されます。また、このクラスはエンコーディング変換も処理し、PDF内で使用される様々なエンコーディングスキーム(StandardEncoding、WinAnsiEncoding、またはカスタムエンコーディングなど)とアプリケーションが処理できるUnicode値との間のマッピングを行います。
FontMappingクラスは、繰り返されるフォント検索を最適化するために内部キャッシュを維持し、フォントメトリクス、文字幅、グリフ情報を照会するためのメソッドを提供します。このキャッシュアプローチにより、広範なテキストコンテンツを持つ文書を処理する場合や、文書構造を複数回通過する必要がある操作を実行する場合のパフォーマンスが向上します。
- Font Descriptor(フォント記述子) – フォントの特性とメトリクスを指定するPDF辞書
- Character Encoding(文字エンコーディング) – PDFコンテンツストリーム内の文字コードを実際の文字またはグリフにマッピングするスキーム
- Font Embedding(フォント埋め込み) – 一貫したレンダリングを保証するために、完全なフォントデータをPDFファイル内に含める手法
- Glyph Substitution(グリフ置換) – 欠落または利用できないフォントグリフを代替フォントからの代替物で置き換えるプロセス
- ToUnicode CMap – 正確なテキスト抽出のために文字コードをUnicode値に変換する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
- PDF Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
- (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
