Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

Even-odd fill rule

Even-odd fill rule(偶奇塗りつぶし規則)は、PDF でグラフィックスをレンダリングする際に、パスのどの領域を塗りつぶすかを決定するために使用される幾何学的アルゴリズムです。

カテゴリ: General PDF Concepts
キーワード: even-odd fill rule, Even-odd fill rule

概要

Even-odd fill rule(偶奇塗りつぶし規則)は、PDF でグラフィックスをレンダリングする際に、パスのどの領域を塗りつぶすかを決定するために使用される幾何学的アルゴリズムです。 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているように、この規則は、ある点からどの方向にも光線を引き、その光線がパスセグメントと交差する回数を数えることで、その点がパスの内側にあるか外側にあるかを判定します。交差回数が奇数の場合、その点は内側にあり、偶数の場合は外側にあります。

定義

Even-odd fill rule は、 ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で PDF レンダリング用に規定されている2つの標準パス塗りつぶしアルゴリズムの1つです(もう1つは nonzero winding number rule)。この規則は、特に自己交差や複数のサブパスを持つ複雑なパスの「内側性」を判定するための、直感的な数学的手法を提供します。

このアルゴリズムは、任意のテスト点から無限遠まで光線を概念的に投影し、パスとの交差回数を数えることで機能します。各交差は「内側」と「外側」の状態を切り替えます。外側(偶数カウント0)から始まり、最初の交差で内側(奇数カウント1)になり、2回目の交差で再び外側(偶数カウント2)になる、というように続きます。この交互の挙動が規則の名前の由来であり、複雑な形状や重なり合う図形に適用すると独特の塗りつぶしパターンを作り出します。

パスセグメントの方向を考慮する nonzero winding number rule とは異なり、even-odd rule はすべての交差を方向に関係なく同等に扱います。これにより実装はシンプルになりますが、特にネストされたパスや重なり合うパスでは、異なる視覚的結果を生み出すことがあります。

重要性

PDF の生成や操作を行う開発者にとって、even-odd fill rule を理解することは、複雑な図形のレンダリング方法を制御するために不可欠です。Even-odd と nonzero winding number rule のどちらを選択するかによって、グラフィックスの外観が劇的に変わる可能性があります。特に以下のような場合に顕著です:

  • 穴や切り抜きのある図形(ドーナツ形状や内部に空白部分を持つ文字など)
  • 自身に折り返すような自己交差パス
  • 複合図形を作成する重なり合うサブパス
  • デザインアプリケーションからインポートされたベクターグラフィックス

PDF コンテンツストリームを作成または解析する際、開発者は意図した視覚的結果を得るために正しい塗りつぶし演算子(even-odd の場合は f* または B*)を指定する必要があります。この規則を誤解すると、図形が正しく塗りつぶされず、予期しない領域が塗りつぶされたり透明になったりすることがあります。

仕組み

Even-odd fill rule は、PDF レンダリングプロセス中に光線投射アルゴリズムを通じて動作します。PDF プロセッサが even-odd rule を使用した塗りつぶし操作に遭遇すると、ラスタライズされる各ピクセルまたは点について以下の手順を実行します:

  1. 光線の投影:問題の点から任意の方向に無限遠まで仮想的な光線を投射します(計算効率のため、通常は水平方向)

  2. 交差の検出:この光線がパスの線分や曲線と何回交差するかを数えます

  3. パリティの判定:交差回数が奇数か偶数かを計算します

  4. 塗りつぶしの決定:カウントが奇数の場合は点を塗りつぶし、偶数の場合は塗りつぶしません

PDF コンテンツストリームでは、開発者は特定の演算子を使用して even-odd rule を呼び出します:塗りつぶしのみの場合は f*、塗りつぶしと線描画の場合は B*、閉じて塗りつぶして線描画する場合は b* です。これらのアスタリスク付き演算子は、nonzero winding number rule を使用するアスタリスクなしの対応する演算子と区別されます。

この規則の交互的な性質は、自己交差パスで特徴的なパターンを作り出します。たとえば、1本の連続したパスとして描かれた五芒星は、even-odd rule の下では中央の五角形が塗りつぶされません。その領域からの光線がパスと偶数回(2回)交差するためです。

関連用語

  • Nonzero winding number rule – 内側/外側を判定する際にパスの方向を考慮する代替の塗りつぶし規則
  • Path object – 接続された点と曲線を通じて図形を定義する PDF 内のベクターグラフィックス要素
  • Content stream – ページのグラフィックスとテキストを記述する PDF 演算子とオペランドのシーケンス
  • Fill operator – 現在の塗りつぶし色を使用してパスの内部を塗りつぶす PDF 演算子
  • Clipping path – レンダリングを特定の領域に制限するために使用されるパス。even-odd または nonzero rule を使用できます

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html