PDFont
PDFontは、Apache PDFBoxのPDModel APIにおける高レベルの抽象クラスで、PDF文書内のフォントリソースを表現します。
PDFontは、Apache PDFBoxのPDModel APIにおける高レベルの抽象クラスで、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インターフェースを提供します。このクラスは、Type 1、TrueType、OpenType、CIDフォントなど、さまざまなPDFフォントタイプを扱うための基盤として機能します。PDFontにより、開発者はフォントプロパティの読み取り、テキスト文字列のエンコード、PDF文書の作成や修正時の適切なテキストレンダリングを実現できます。
PDFontは、Apache PDFBoxライブラリにおける抽象基底クラスで、PDF仕様で定義されたフォントリソースを扱うために必要な機能をカプセル化します。生のフォントデータ構造を扱う低レベルのフォント解析クラスとは異なり、PDFontはPDModelレイヤーで動作し、フォントメトリクスの取得、PDFコンテンツストリーム用の文字列エンコード、グリフ情報へのアクセスなど、一般的なフォント操作のための開発者に優しいメソッドを提供します。
クラス階層には、特定のフォントタイプ用の具体的な実装が含まれます:複合フォント(Unicode テキストで一般的に使用)用のPDType0Font、PostScript Type 1フォント用のPDType1Font、TrueTypeフォント用のPDTrueTypeFont、ユーザー定義フォント用のPDType3Font、マルチプルマスターフォント用のPDMMType1Fontです。各サブクラスは、それぞれのフォント形式の特定のエンコードとレンダリング要件を処理しながら、PDFont基底クラスを通じて一貫したインターフェースを維持します。
PDFontは、JavaのFontクラスとは異なり、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生成、操作、またはアクセシビリティ準拠に取り組む開発者にとって、PDFontは異なる閲覧プラットフォームやデバイス間でテキストコンテンツが正しくレンダリングされることを保証するために不可欠です。適切なフォント処理は、 ( 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を作成するために重要です。フォントは、支援技術が障害を持つユーザーにテキストコンテンツを解釈し提示する方法に直接影響を与えるためです。
( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) のベストプラクティスに従ってTagged PDFを生成する際、開発者は多言語コンテンツに必要な文字セットをサポートする適切なフォントを埋め込むためにPDFontオブジェクトを使用する必要があります。誤ったフォント選択やエンコードは、グリフの欠落、文字化け、または完全なレンダリング失敗を引き起こす可能性があります。
PDFontは、文書の保存と長期アーカイブの目的でも重要です。フォントサブセットを埋め込み、フォントリソースを効率的に管理するメソッドを提供することで、元のフォントが閲覧システムにインストールされているかどうかに関係なく、視覚的な忠実性を維持する自己完結型のPDF文書を開発者が作成できるようにします。
PDFontは、PDF文書のリソース階層内に格納されている基礎となるフォントディクショナリとフォントプログラムデータをラップすることで動作します。PDFページがフォントリソースを参照する際、PDFBoxは適切なPDFontサブクラスを使用して、BaseFont名、エンコード方式、フォントディスクリプタ、埋め込みフォントプログラムなどのフォントディクショナリエントリを解釈します。
このクラスは、テキスト操作のための主要なメソッドを提供します:encode()はJava文字列をフォントの特定のエンコードを使用してPDFコンテンツストリームに適したバイト配列に変換し、getStringWidth()はレイアウト目的でテキストの寸法を計算し、getPath()は高度なレンダリングタスク用にグリフアウトラインを取得します。これらのメソッドは、PDF仕様で定義されたさまざまなフォント形式とエンコード方式の複雑さを抽象化します。
フォントの読み込みは、各フォントタイプに固有の静的ファクトリメソッドまたはコンストラクタを通じて行われます。例えば、PDType0Font.load()はTrueTypeまたはOpenTypeファイルからUnicode互換のフォントを作成し、フォントの埋め込みとサブセット生成を自動的に処理します。PDFontオブジェクトは、フォントディクショナリ(COSDictionary)と、実際のフォントプログラムデータを含む関連フォントストリームの両方への参照を維持します。
テキストをレンダリングする際、PDFコンテンツストリーム演算子は、ページのリソースディクショナリから名前でフォントを参照します。PDFBoxはこれらの参照をPDFontインスタンスに解決し、 ( 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 ) の仕様に従って各グリフを正しく配置およびレンダリングするために必要なエンコードとメトリクス情報を提供します。
- PDPage – テキストコンテンツをレンダリングするためにフォントが使用されるPDF文書内の単一ページを表す
- PDResources – PDFページで使用されるフォント、画像、グラフィックス状態などの共有リソースのコンテナ
- COSDictionary – フォントディクショナリ構造の低レベルなCarousel Object System表現
- PDPageContentStream – PDFontオブジェクトを使用するテキスト表示演算子を含むコンテンツ操作を記述するためのAPI
- Font embedding – 一貫したレンダリングを保証するために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
