Graphics state stack
グラフィックス状態スタックは、PDFコンテンツストリームが現在のグラフィックス状態パラメータを一時的に保存および復元できるようにする、後入れ先出し(LIFO)データ構造です。
グラフィックス状態スタックは、PDFコンテンツストリームが現在のグラフィックス状態パラメータを一時的に保存および復元できるようにする、後入れ先出し(LIFO)データ構造です。
(
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(プッシュ)およびQ(ポップ)オペレータを使用して操作され、これらはPDFコンテンツストリームで最も頻繁に使用されるオペレータの一つです。
グラフィックス状態スタックは、PDFプロセッサが管理する内部メモリ構造であり、コンテンツストリーム処理中の特定の時点におけるグラフィックス状態の完全なスナップショットを保存します。グラフィックスのレンダリング方法を制御するアクティブなパラメータセットであるグラフィックス状態そのものとは異なり、スタックは後で復元できるこれらのパラメータの以前のバージョンを保持します。スタック上の各エントリには、現在の変換マトリックス(CTM)、カラースペース、線幅、ストロークおよび塗りつぶしの色、クリッピングパス、その他のレンダリングパラメータを含む、すべてのグラフィックス状態パラメータの完全なコピーが含まれています。スタックは、処理される各ページまたはform XObjectごとに独立して動作し、入れ子になったコンテキスト内でのグラフィックス状態の変更が分離された状態を保つことを保証します。
PDF生成または操作を行う開発者にとって、グラフィックス状態スタックを理解することは、いくつかの理由で不可欠です。第一に、グラフィックス操作を副作用なしにカプセル化できるようにすることで、モジュール式で再利用可能なコンテンツの作成が可能になります。一時的な変換、色、またはクリッピングパスを適用し、その後以前の状態をクリーンに復元できます。第二に、q/Qオペレータの適切な使用は、グラフィックス状態の汚染を防ぎます。これは、ある描画操作からの意図しないパラメータ変更が後続の操作に影響を与えることを指します。第三に、スタックはform XObjectや入れ子になったコンテンツを扱う際に重要です。異なるグラフィカル要素間で状態の分離を維持するためです。最後に、バランスの取れたqとQオペレータは、PDF/UAコンプライアンスやその他のPDF標準の要件であることが多く、アクセシビリティとドキュメント品質のためにスタック管理が重要になります。
PDFプロセッサがコンテンツストリーム内でqオペレータに遭遇すると、現在のグラフィックス状態の完全なコピーを作成し、それをスタックにプッシュします。その後のすべてのグラフィックス操作は、保存されたコピーに影響を与えることなく、アクティブなグラフィックス状態を変更します。Qオペレータに遭遇すると、プロセッサはスタックの最上位エントリをポップし、現在のグラフィックス状態を保存された値で置き換えます。これにより、対応するqオペレータ以降に行われたすべてのグラフィックス状態の変更が事実上元に戻されます。スタックは任意の深さまで入れ子にすることができ、複数のレベルの状態保存が可能です。たとえば、典型的なパターンは次のとおりです:qで状態を保存し、変換マトリックスを適用し、いくつかのオブジェクトを描画し、別のqを適用し、色を変更し、さらにオブジェクトを描画し、Qで復元(変換のみの状態に戻る)し、最後に再びQで復元(元の状態に戻る)します。すべてのqに対応するQがあることが重要です。バランスの取れていないスタックは、レンダリングエラーやドキュメントの破損を引き起こす可能性があります。グラフィックス状態スタックはページ間で永続化されません。各ページはデフォルトのグラフィックス状態のみを含む新しいスタックから始まります。
- Graphics state(グラフィックス状態) – PDFでコンテンツがどのように描画されるかを制御するレンダリングパラメータの完全なセット
- Content stream(コンテンツストリーム) – ページまたはform XObjectにレンダリングされるグラフィカルコンテンツを記述する命令のシーケンス
- qオペレータ – 現在のグラフィックス状態をスタックにプッシュする、グラフィックス状態保存オペレータ
- Qオペレータ – 保存されたグラフィックス状態をスタックからポップする、グラフィックス状態復元オペレータ
- Current transformation matrix(CTM、現在の変換マトリックス) – 座標系の変換を定義するグラフィックス状態パラメータで、スタックと共に保存および復元される
- (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
