Clipping path
クリッピングパスは、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 におけるレンダリング操作の領域境界を確立する特殊なタイプのパスオブジェクトです。通常のパスは線描(輪郭描画)や塗りつぶし(ソリッド塗装)が可能ですが、クリッピングパスはクリッピング演算子(W または W*)とともに使用され、後続のグラフィックス操作によってページのどの部分が描画可能かを定義します
(
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
)
。
クリッピングパスは、他のマスキング技術といくつかの重要な点で異なります。ソフトマスクやトランスパレンシーグループが段階的な不透明度の変化を作成できるのに対し、クリッピングパスは二値的包含を伴うハードエッジの境界を生成します。つまり、ピクセルはクリッピング領域の完全に内側か完全に外側のいずれかになります。さらに、イメージマスクが特定のコンテンツアイテムに適用されるのに対し、クリッピングパスはグラフィックス状態が復元されるか新しいクリッピングパスが確立されるまで、すべての後続描画操作に影響を与えます。
クリッピングパスは累積的であり、より制限的にしかなりません。新しいクリッピング操作は、現在のクリッピングパスと交差し、より小さいか同じサイズのクリッピング領域を作成します。クリッピング領域を拡張する唯一の方法は、Q 演算子を使用して以前に保存されたグラフィックス状態を復元することです。
クリッピングパスは、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 ) 。
パス構築: まず、m(moveto)、l(lineto)、c(curveto)、re(rectangle)などの標準的なパス構築演算子を使用してパスを定義します。このパスは、目的のクリッピング境界のジオメトリを記述しますが、まだレンダリングには影響しません。
クリッピング演算子の適用: パスを構築した後、2つのクリッピング演算子のいずれかを適用します。W 演算子(clip)は非ゼロワインディング数規則を使用してパス内の領域を決定し、W*(eoclip)は偶奇規則を使用します。これらの演算子は、現在のパスをクリッピングパスに変換し、その後グラフィックス状態から現在のパスをクリアします。
交差動作: 新しく確立されたクリッピングパスは、現在のグラフィックス状態の既存のクリッピングパスと交差します。結果として得られるクリッピング領域は、両方の領域の交差部分、つまり両方のパスが重なる部分です。この交差のみの動作により、クリッピングパスは描画可能領域を制限することしかできず、拡張することはできません。
グラフィックス状態の管理: クリッピングパスは、q(save)および Q(restore)演算子を使用して、他のグラフィックス状態パラメータとともに保存および復元されます。一時的なクリッピングパスを適用するには、通常、開発者は q でグラフィックス状態を保存し、クリッピングパスを確立し、クリップされた描画操作を実行してから、Q で以前の状態を復元します。
レンダリングの強制: クリッピングパスがアクティブになると、テキスト、画像、塗りつぶされた図形、線描パスを含むすべての後続描画演算子は、クリッピング領域内のピクセルにのみ影響します。この領域外に該当するコンテンツは単にレンダリングされませんが、コンテンツストリームのデータ構造には存在する可能性があります。
- Graphics state(グラフィックス状態) – 現在のクリッピングパスを含む、グラフィックス演算子がコンテンツをレンダリングする方法を制御するパラメータのコレクション
- Path object(パスオブジェクト) – 線描、塗りつぶし、またはクリッピングに使用できる、接続または非接続の点と曲線のシーケンス
- Content stream(コンテンツストリーム) – PDF ページの視覚的外観を記述する命令のシーケンス
- Nonzero winding number rule(非ゼロワインディング数規則) – パス交差の方向に基づいて点がパス内にあるかどうかを判定するアルゴリズム
- Save and restore operators(保存および復元演算子) – クリッピングパスを含むグラフィックス状態パラメータを保存および取得する
qおよびQ演算子
- (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
