FillEvenOddRuleは、Apache PDFBox Java APIのクラスで、PDFグラフィックスのレンダリング時にパスのどの領域を塗りつぶすかを決定するための偶奇規則(even-odd winding rule)を表します。この規則は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
)
で定義されている2つの塗りつぶし方法の1つであり、複雑な形状や重なり合うパスを処理する際に、非ゼロワインディング規則の代替手段を提供します。偶奇規則は、自己交差する境界や複数のネストされた輪郭を含むパスを扱う際に特に有用です。
FillEvenOddRuleは、Apache PDFBox内の具象実装クラスで、パス塗りつぶし操作のための偶奇ワインディング数規則をカプセル化します。PDFグラフィックスでは、パスが描画される際、レンダラーはパスで囲まれた領域のどの部分を色で塗りつぶすべきかを決定する必要があります。偶奇規則は、任意の点から無限遠まで概念的に光線を引き、その光線が交差するパスセグメントの数を数えることでこれを実現します。カウントが奇数の場合、その点は塗りつぶし領域の内側にあり、偶数の場合は外側にあります。
これは、パスセグメントの方向を考慮して塗りつぶし領域を決定する代替の非ゼロワインディング規則(別のPDFBoxクラスで表される)とは異なります。偶奇規則はよりシンプルで方向に依存しないため、穴のある形状や複雑な重なり合う幾何学図形に対して特に予測可能です。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
)
では、これらの塗りつぶし規則はベクターグラフィックス、フォームフィールド、さらにはアクセシブルコンテンツレンダリングの一部が最終文書でどのように表示されるかに影響を与える基本的な操作です。
FillNonZeroAndStrokePathは、Apache PDFBox APIのクラスであり、塗りつぶしと輪郭描画の両方の操作を同時に適用してパスオブジェクトをレンダリングするための、特定の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
)
で定義されている"B"オペレーターに対応しており、nonzero winding number rule(非ゼロワインディング数規則)を使用して、パスのどの領域を塗りつぶすかを決定した後、輪郭描画を適用します。PDFの処理ワークフローにおいて、このクラスは開発者が、内部の塗りつぶしと輪郭の描画の両方を単一の操作で必要とする複雑なベクターグラフィックスをプログラムで作成または操作することを可能にします。
FillNonZeroAndStrokePathは、Apache PDFBoxのコンテンツストリーム処理フレームワーク内の具象実装クラスであり、PDFの"B"グラフィックスオペレーターを処理します。このオペレーターは、PDFレンダラーに対して、nonzero winding number ruleを使用してパスを塗りつぶし、その後パスの輪郭を単一の操作で描画するよう指示します。nonzero winding number ruleは、ある点がパスの内側にあるか外側にあるかを判定するために、その点から無限遠に向かって光線を引き、パスが光線を各方向に横切る回数をカウントします。結果が非ゼロであれば、その点はパスの内側にあると見なされます。
このクラスは、類似のパス描画オペレーターといくつかの重要な点で異なります。even-odd rule(奇偶規則)を使用して塗りつぶし領域を決定するFillAndStrokePathとは異なり、FillNonZeroAndStrokePathは特にnonzero winding numberアルゴリズムを使用します。また、単純なFillやStroke操作とは異なり、両方のレンダリングモードをアトミックに組み合わせることで、塗りつぶしと輪郭描画の両方のプロパティを同じパスジオメトリに適用する必要がある場合に、一貫したレンダリングを保証します。このクラスはPDFBoxのオペレーター処理インフラストラクチャを拡張しており、コンテンツストリームパーサーがPDF処理中に"B"オペレーターに遭遇すると、自動的に呼び出されます。
FillNonZeroRuleは、Apache PDFBox Javaライブラリのクラスで、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
)
で定義されている2つの標準的な方法の1つで、自己交差や重複するサブパスを持つ複雑なパスに対する曖昧な塗りつぶし操作を解決するために使用されます。非ゼロワインディング規則は、ベクターグラフィックスのレンダリングや、異なるPDFプロセッサ間での一貫した視覚的出力を保証する上で特に重要です。
FillNonZeroRuleは、Apache PDFBox内の具象実装クラスで、パス塗りつぶし操作のための非ゼロワインディング数アルゴリズムをカプセル化しています。PDF文書では、パスが描画され塗りつぶされる際、レンダリングエンジンはパスによって囲まれたどの領域に塗りつぶし色を適用すべきかを判断する必要があります。非ゼロワインディング規則は、パスセグメントの方向を追跡することでこれを実現します。つまり、パスがその点の周りを正味何回巻くかに基づいて、各領域にカウントを割り当てます。ワインディングカウントが非ゼロ(正または負)の場合、その領域は塗りつぶされます。
これは、代替となる偶奇規則(PDFBoxのEvenOddRule)とは異なります。偶奇規則は方向を考慮せずにパスの交差を単純にカウントします。非ゼロワインディング規則はパスの方向を尊重するため、重なり合うパスが単純な交差カウントではなく、描画方向に基づいて塗りつぶし領域または未塗りつぶし領域を作成する必要がある複雑な図形により適しています。
塗りつぶし規則を理解し正しく実装することは、PDFのレンダリング、作成、操作を行う開発者にとって不可欠です。非ゼロワインディング規則と偶奇規則の選択は、特に複合パス、テキストのアウトライン、重複要素を持つベクターアートワークを扱う際に、複雑なグラフィックスの表示方法に影響を与えます。塗りつぶし規則の適用が不適切な場合、グラフィックス内の領域が予期せず塗りつぶされたり、塗りつぶされなかったりするなどの視覚的アーティファクトが発生する可能性があります。
FillOrderChangeInputStreamは、Apache PDFBoxにおいて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
)
で要求される期待される形式にデータを自動的に変換します。このクラスは、TIFF画像や、ピクセルデータを逆ビット順序で保存する可能性のある他の形式を扱う際に特に重要です。
FillOrderChangeInputStreamは、基底ストリームから読み取られるバイトのビット順序を反転するJava入力ストリームラッパークラスです。PDF文書では、画像データは通常、最上位ビット(MSB)ファーストで保存されますが、一部の画像形式、特に特定のTIFF派生形式では、最下位ビット(LSB)ファーストでデータを保存します。このクラスは、リアルタイムでビット順序変換を実行することで、そのギャップを埋めます。汎用ストリーム変換器とは異なり、FillOrderChangeInputStreamは、
(
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ファイル内の画像辞書に含まれるFillOrderパラメータ専用に設計されています。このクラスは透過的に動作し、PDF処理コードがビット順序の変動を手動で処理する必要なく画像データを扱えるようにします。
FilterFactoryは、Apache PDFBoxにおけるコアコンポーネントであり、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ファイルの読み込みや書き込み時に、圧縮アルゴリズム(FlateやLZWなど)や画像エンコード形式(DCTやCCITTFaxなど)を処理するための適切なフィルタ実装をインスタンス化します。
FilterFactoryは、Apache PDFBoxライブラリにおけるJavaクラスで、フィルタオブジェクトを作成するためのファクトリデザインパターンを実装しています。PDF用語におけるフィルタとは、ストリームデータをエンコードまたはデコードするアルゴリズムのことで、主に2つの目的があります。1つはファイルサイズを削減するためのデータ圧縮、もう1つは画像などの異なるデータ型に対する特殊なエンコーディングです。FilterFactoryは、中央レジストリおよびインスタンス化ポイントとして機能し、フィルタ名(PDF辞書内に現れる形式)と対応するJava実装クラスをマッピングします。PDFBoxが
(
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
)
で定義されている/Filterエントリを持つストリームオブジェクトに遭遇すると、FilterFactoryを使用して正しいデコーダまたはエンコーダのインスタンスを取得します。
FontCacheは、Apache PDFBoxにおけるフォントリソース管理のためのユーティリティクラスです。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
)
などの標準で規定されているテキストの忠実性とアクセシビリティ準拠を維持するために不可欠です。
FontCacheは、Apache PDFBoxライブラリ内のコンポーネントで、フォントオブジェクトを保存・管理することで、冗長なフォント読み込みと解析操作を回避します。
(
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
)
で定義されているフォント特性を表現する低レベルのフォント記述子クラスとは異なり、FontCacheはアプリケーションレベルで動作し、複数のPDF操作にわたってリソース使用を最適化します。FontCacheは、以前に読み込まれたフォントプログラム、エンコーディングテーブル、文字マッピングデータへの参照を保持し、同じフォントを複数回参照する文書を処理する際にPDFBoxがこれらのリソースを効率的に再利用できるようにします。これは、文書レベルの仕様であるPDFフォント辞書構造自体とは異なり、FontCacheはPDFBoxライブラリ実装に特有のランタイム最適化機構です。
FontFormatは、Apache PDFBoxにおいて、Javaアプリケーションでの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文書で定義された複雑なフォント構造と、Javaのテキスト処理機能との橋渡し役を果たします。
FontFormatは、Apache PDFBoxライブラリ内の特化したユーティリティクラスであり、PDFフォントとそれに関連する文字エンコーディングを扱うためのロジックをカプセル化しています。JavaのAWTや他のグラフィックスライブラリにある一般的なフォントレンダリングクラスとは異なり、FontFormatは、
(
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
)
で定義されているType 1、TrueType、Type 3、およびCIDフォントのサポートを含む、PDFフォント処理の固有の要件に特化して対応しています。このクラスは、PDFコンテンツストリーム内の文字コードと実際のUnicode文字とのマッピングを処理し、正確なテキスト抽出と操作に不可欠な役割を果たします。FontFormatは、フォントリソース管理ではなく、フォーマットとエンコーディングの側面に焦点を当てている点で、PDFont(PDFBoxの主要なフォントクラス)とは異なります。
FontInfoは、Apache PDFBoxのユーティリティクラスで、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
)
で定義された低レベルのフォントデータ構造とJavaアプリケーション層との橋渡し役を果たし、開発者がフォントプロパティの照会、テキストレンダリング特性の分析、およびアクセシビリティや処理目的のためのフォントメタデータの抽出を可能にします。
FontInfoは、Apache PDFBoxライブラリ内のJavaクラスで、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ファイル構造内に格納される生のフォント辞書やストリームとは異なり、FontInfoは、フォント名、タイプ(Type 1、TrueType、OpenType、CID)、エンコーディングスキーム、埋め込み状態、文字マッピング情報などのフォント属性にアクセスするための開発者にとって使いやすいインターフェースを提供します。
FontMapperは、Apache PDFBoxにおいて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レンダリング、テキスト抽出、文書操作タスクにおいて視覚的忠実性を維持するために不可欠です。
FontMapperは、PDFで指定された正確なフォントが利用できない場合に適切な代替フォントを見つけることでフォント参照を解決する、Apache PDFBoxのユーティリティクラスです。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
)
で定義されているフォント辞書を使用してフォントを参照する際、FontMapperは文字の外観とテキストの整合性を保持しながら、代替として機能するシステム上の物理的なフォントファイルを決定します。
Apache PDFBoxにおけるFontMappersは、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
)
。FontMappersは、文字エンコーディングと視覚的外観を保持しながら、適切なフォント代替を見つけるという複雑なタスクを処理します。この機能は、アクセシビリティ準拠のために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
)
。