FillNonZeroAndStrokePath
FillNonZeroAndStrokePathは、Apache PDFBox APIのクラスであり、塗りつぶしと輪郭描画の両方の操作を同時に適用してパスオブジェクトをレンダリングするための、特定のPDFグラフィックスオペレーターを表します。
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"オペレーターに遭遇すると、自動的に呼び出されます。
PDF生成、操作、またはレンダリングに携わる開発者にとって、FillNonZeroAndStrokePathを理解することは、複雑なベクターグラフィックスを正確に処理し、適切な視覚的出力を保証するために非常に重要です。多くのプロフェッショナルグラフィックスアプリケーションやデザインツールは、輪郭付きの図形で視覚的に豊かなコンテンツを作成するために、塗りつぶしと輪郭描画を組み合わせたオペレーターを使用するPDFを生成します。これらのオペレーターの処理を誤ると、レンダリングアーティファクトや視覚要素の欠落が発生する可能性があります。
このオペレーターは、Tagged 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アクセシビリティツールやバリデーターを構築する開発者は、視覚コンテンツがドキュメント構造内で適切に表現されることを保証するために、これらのグラフィックスオペレーターを正確に解釈する必要があります。
nonzero winding ruleとeven-odd fill ruleの区別は、自己交差や複雑な入れ子構造を持つパスを処理する際に重要になります。これら2つのアルゴリズムは、劇的に異なる視覚的結果を生み出す可能性があるためです。FillNonZeroAndStrokePathを認識しない、または適切に実装しない開発者は、処理や変換操作中にPDFドキュメントの意図された外観を意図せず変更してしまう可能性があります。
PDFコンテンツストリームがApache PDFBoxによって解析されるとき、パーサーが"B"オペレータートークンに遭遇すると、FillNonZeroAndStrokePathクラスがインスタンス化され、呼び出されます。このクラスはPDFBoxのOperatorProcessor基底クラスを継承し、 ( 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 ) で定義されているこのオペレーターの特定のセマンティクスを処理するためにprocess()メソッドを実装します。
処理シーケンスは、塗りつぶしの色、輪郭の色、線幅、線の結合スタイル、その他のレンダリング属性などのパラメータを含む現在のグラフィックス状態を取得することから始まります。次にオペレーターは、コンテンツストリーム内の先行するパス構築オペレーター(moveto、lineto、curvetoなど)によって構築された現在のパスオブジェクトにアクセスします。パスジオメトリは最初にnonzero winding number ruleを使用して塗りつぶされ、その後、同じパスが現在の輪郭描画パラメータを使用して描画されます。
nonzero winding number ruleは、任意の点から無限遠に向かって概念的に光線を引き、交差をカウントすることで動作します。左から右への各交差は1を加算し、右から左への各交差は1を減算します。最終的なカウントが非ゼロであれば、その点は塗りつぶし領域の内側にあります。このアルゴリズムは、自己交差や入れ子になった輪郭を持つ複雑な図形を予測可能な方法で処理するため、多くのグラフィックスシステムでデフォルトの塗りつぶし規則となっています。
開発者の観点から、PDFBoxを拡張する、またはカスタムコンテンツストリーム処理を実装する際に、カスタムレンダリングロジックの実装、解析のためのパス情報の抽出、または他のフォーマットへの変換のためのグラフィックスの変換を行うために、FillNonZeroAndStrokePathをオーバーライドまたは操作する必要がある場合があります。このクラスはPDFBoxのグラフィックス状態管理システムへのフックを提供し、開発者がPDF仕様との整合性を保ちながら、これらのオペレーターをプログラムで傍受および処理できるようにします。
- Content Stream(コンテンツストリーム) – ページコンテンツとグラフィックスを定義するPDFオペレーターとオペランドのシーケンス
- Graphics State(グラフィックス状態) – グラフィックスオペレーターがコンテンツを描画する方法を制御するレンダリングパラメータの集合
- Path Construction Operators(パス構築オペレーター) – moveto、lineto、curvetoコマンドを通じて幾何学的パスを定義するPDFオペレーター
- Nonzero Winding Number Rule(非ゼロワインディング数規則) – パスの方向に基づいてパスのどの領域を塗りつぶすかを決定するアルゴリズム
- Stroke Operation(輪郭描画操作) – 指定された線幅と色でパスの輪郭に沿って描画するプロセス
- (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
