PDFにおける透明効果、20年の歩み
著者 - Peter Wyatt
半透明という概念をメインストリームのページ記述言語(PDL)に導入したAdobe PDF 1.4のリリースから、2021年末で20年を迎えました。透過画像モデルによって、「それ以前のバージョンのPDFが提供していた不透過画像モデル」を拡張し、「不透明度を調節しながらオブジェクトをペイントし、先にペイントしたオブジェクトを透過させる」ことができるようになりました。
このことは、メインストリームとして広く採用されていたPDLに非常に重要な技術的革新をもたらしました。PostScriptやそれ以前のバージョンのPDFはいずれも、不透過画像モデルしかサポートしていなかったからです。透明効果の導入は、約30年にわたるPDFの歴史において最も重要な技術革新と言えるでしょう。PDFは、ネイティブな半透明を定義して使い始めた最初のPDLではありませんでしたが、2001年の時点ですでに高い市場シェアを持っていたことから、必然的にコンピューター業界の注目を集めることとなりました。今日では、主なファイル形式やグラフィックソフトウェアはいずれもこのような透明効果をサポートしていますが、PDFが半透明を第一級のネイティブなファイルフォーマットの機能として確立しました。
アドビがPDF 1.4で導入した透過画像モデルの機能は、アルファ合成を超えるものでした。最小限のオブジェクトでアーティスティックかつリアルな効果を作成できると同時に、PDFへエクスポートする際にデザインをラスタライズする必要がなくなりました。また、透明効果をネイティブにサポートしたことで、ベクトル画像やテキストを、デバイスに依存せず作成時の色のまま処理することができるようになりました。
このブログでは、20年前にネイティブな透明効果を導入したことが、PDFの作成者側と、PDFを使用する側の双方にとって画期的な出来事であった理由を振り返ります。技術的バックグラウンドを持たない読者の方に向けて、全透明・半透明について説明するとともに、今やPDFにとって欠かせないこの機能を支える基本概念を紹介します。特定のアプリケーションで使用される透明効果の専門的技術に関して、深く掘り下げることはここではしません。そうした専門的なトピックについては、他に多くのリソースがありますので、そちらを参照してください。
全透明・半透明とは?
全透明とは、1つのオブジェクト、あるいはオブジェクトの一部を完全に非表示にする機能を指します。全透明の代表的な例として、モノクロ画像を使用して画像の特定のピクセルをオフにする(ペイントしない)「ステンシルマスク」や、パスで選択された範囲の外側部分のコンテンツを切り抜く(レンダリング対象外とする)「クリッピングパス」が挙げられます。レベル1のPostScriptや最初期バージョンのPDFは、いずれもそうした機能を備えていました。アドビが1993年に発行したリファレンスマニュアルで、PDF 1.0におけるステンシルマスクは次のように説明されています。
ステンシルマスクは、ペンキやスプレーを使う際にステンシル(文字や絵柄などが転写できる型版)を使用するのと似ています。1つまたは複数の穴が開いたステンシルをページの上に置きます。ステンシルが特定の場所にあると、ステンシルの穴を通るインクだけがページに付くことになります。ステンシルを取り外せば、またページのどこにでもインクを塗ることができます。1つのページの作成に複数のステンシルを使用することもできます。最初のステンシルを取り外す前に2番目のステンシルを追加すると、ページ中の両方のステンシルに穴が開いている場所にのみインクが付きます。
半透明では、前景オブジェクトと下層(背景)を部分的に混合する必要があるため、全透明よりはるかに複雑です(専門用語ではアルファ合成またはアルファブレンドと呼ばれます)。PDF 1.4にて透過画像モデルがサポートされるようになったことで、アルファ定数、ソフトマスク、ブレンドモード、マット処理、シェイプと不透明度、透明度グループといった多くの新たな概念がPDFに加わりました。また、それまでのPostScript/PDFにおける不透過画像生成モデルもそのまま機能として残りました。
透明効果が可能にすること
透明効果によって、ドロップシャドウ、フェザリング、ソフトエッジ、ブラー、光彩、重なり合ったオブジェクトの半透明化などの機能が生まれました。こうした機能により、グラフィックデザイナーやアーティストは、単なる不透明なオブジェクトに留まらない創造性と柔軟性を発揮できるようになりました。現在では、標準的なイラストレーションやオフィススイートのアプリケーションがあれば誰でも、あらゆるオブジェクトに透明効果を反映させることができますが、2001年時点では、そうした機能を持つのは特殊なアプリケーションに限られていました。OSや画像レンダリング機能も現在ほど成熟したものではありませんでした。
不透明度、インナーグローとアウターグロー、ドロップシャドウ、フェザリング。どれも透明効果によって可能になりました。(Ghent Workgroup『透明効果に関するベストプラクティス』より)
ネイティブに透明効果が処理できない場合、あらかじめ画像をレンダリングしていないとグラフィック効果を反映できないのに対して、PDF出力の際にソース形式のネイティブな透明効果を保持しておけば、ファイルのデバイス依存度をぐっと下げることができます。デザインやレイアウトによっては、レンダリングの範囲がページ全体に及び、ファイル容量が非常に大きくなるとともに半面(が正しいです)テキストの品質が低くなる恐れがあります。ラスタライズされた画像は、ターゲットデバイスの解像度と色再現性を想定したうえで生成されます。コンテンツの調整、編集、ターゲットの変更が必要な場合には、オーサリングソフトウェアで一からやり直さなければなりません。
それまでのPDFの機能
初期バージョンのPDFでは、「オーバープリント」を巧みに活用できるグラフィックアーティストやデザイナーは、半透明を表現することができました。これは文字通り、ペイントの上に別のペイントを重ねるという手法です。ただし、オーバープリントは専門的な印刷ワークフローでのみサポートされるのが一般的で、その上、PDFビューア上のサポートは非常に限られていました。現在でも、すべてのPDFビューアが「オーバープリントプレビュー」をサポートしているわけではありません。
PDF 1.4の初期の実装においては、基盤となる不透明レンダリング技術(PostScriptインタープリターなど)への依存度が高かったことから、新たな透過画像モデルを正確かつ効率的に安定してサポートするのは簡単ではありませんでした。この技術が持つ「驚くべき」新規性、複雑な使用条件、作業負荷の大きさから、当時はPDF 1.4を酷評したり、否定的な姿勢を示したりする人々が多く存在した一方、革新的なテクノロジーが誕生するチャンスであり、透明効果の普及によってより広範なPDFエコシステムが恩恵を受けると考える人々もいました。初期の実装に関わった技術者達にとってハードルとなった技術的課題は、PDF 1.4のオリジナル版に存在したエラーや制約であり、これらの課題は2006年1月にアドビが『PDFのブレンドモードに関する補遺』を発行したことで解決されました。
実装において「透明効果のフラット化」を選択する場合もあります。これは、重なり合った複数の透明なオブジェクトを、多数の不透明なオブジェクトにできるだけ正確に変換することを指します。その結果、望ましくない歪やオブジェクトの境目が見えてしまったり、色の差異が生じることが多くあります。また、PDFページの大部分をラスタライズすることにより、より大きなファイルになってしまう上、デバイス非依存性が損なわれる場合があります。
望ましくないアーティファクト(Ghent Workgroup『透明効果に関するベストプラクティス』より)
現在、PDF/Xを使用するユーザーは、グラフィックアートのワークフローにおいて信頼性の高いオーバープリントと透明効果のレンダリングを保証するために、数多くのテストスイート、テストページ、コントロールストリップに精通しているはずです。European Color InitiativeのAltona Test Suite、Ghent Working Groupの「Ghent PDF Output Suite」、FOGRA、IDEAllianceなどのツールを使用することで、印刷業者や発注者が、デジタルフロントエンド(DFE)やラスターイメージプロセッサ(RIP)で、ネイティブな透明効果を保ったままPDFファイルを正確に印刷できるかどうかを確認できます。
ポーターとダフのアルファ合成
半透明を使用したレンダリングの幾何学的原理は、当時ルーカスフィルムで働いていたトーマス ポーターとトム ダフが発表した1984年の独創的な論文『デジタル画像の合成(Compositing Digital Images)』で初めて紹介されました。透過レンダリングの計算式(詳細はISO 32000 第11節参照)は恐ろしいほど難解に見えるかもしれませんが、基本は比較的簡単です。
各オブジェクトやピクセルは、透明度を表す数値であるアルファチャネルと関連づけられています。アルファチャネルは、0.0(完全に透明・非表示)から1.0(完全に不透明・下層が全く見えない)の範囲です。グラフィックオブジェクトはコンテンツストリームに表示される順序(Zオーダー)でペイントされます。複数のオブジェクトが重なり合う場合、他のオブジェクトの上にある半透明オブジェクトでは、下層にあるオブジェクトと合わせて部分的に表示されます。重なり合う複数のオブジェクトがすべて半透明の状態である場合、下層に積み重なった複数のオブジェクトが部分的に表示されます。アルファ値(透明度)はオブジェクトの色とは無関係であることに注意してください。どの色も半透明の状態になりえます。
ポーターとダフはさまざまな合成演算子を定義していますが、PDFでは前景と背景のオブジェクトをブレンドしたときの色を計算するためにOVER演算子を使用しています。(背景オブジェクト自体も、他のオブジェクトをZオーダーの下位で合成した結果である可能性があります)。OVER演算子を用いることで、例えば、オブジェクト上に半透明のセロハンのレイヤーを重ねたら直感的にどう見えるかを、効率良く示すことができます。
ポーターとダフは、幾何学的なサブピクセルへの寄与因子の観点からこのモデルを説明しました。各ピクセルには、前景色、前景アルファ、背景色、背景アルファのさまざまな寄与因子が含まれています。前景オブジェクトと背景オブジェクトのサブピクセルの寄与因子という概念が、最終的なビジュアルの生成にどう寄与するかがわかるように、簡潔でインタラクティブなSVGモデルを作ってみました。
もちろん、複雑になるほど新たな問題が発生します。初期のPDFにおいて、透明効果に対応するすべてのレンダラーでエラーが全く存在しなかったわけではありません。しかし、透明効果の使用がグラフィックアートなどの専門的な市場から、メインストリームであるオフィスやイラストレーションの用途に拡大するのに従い、PDFソフトウェアのベンダーは必要なサポートを追加してきました。
上記のインタラクティブなSVGモデルを見ると、色の処理やアルファチャネルの計算におけるわずかな誤差が見た目の違いにつながることが理解できるでしょう。PDF上で透明効果を多用しすぎると、各ピクセルをデバイスで出力する時に多くの計算が必要になり、レンダリングのパフォーマンスに影響を与えるリスクがあります。高速バリアブルデータ印刷のような特定の分野の業務では、Ghent Workgroupの「透明効果に関するベストプラクティス(Transparency Best Practices)」など、スループットを維持するため透明効果の効率的な使用に関する具体的なガイドラインがあることをご存知かもしれません。しかし、一般的なユーザーがビジネス用途やウェブでPDFを利用する場合、PDFのネイティブな透明効果を使うのが当たり前になっています。
透明効果のその先へ
PDF 1.4で、アドビはブレンドモードと呼ばれるさらに高度なエフェクトも導入しました。ブレンドモードは、前景色と背景色、そしてアルファチャネルを組み合わせて(ブレンドして)別の色を生成する関数(数式)です。このため、ブレンディングが発生する色空間(ブレンディングカラースペース)が最終的な色の見た目に大きな影響を与える可能性があります。
アドビは、PDF 1.4の発行時に、「アヒルと虹」のカラープレートを使用して、ブレンドモードの仕組みと、ブレンドモードの色空間の作用について解説しました。ブレンドモードの名前にふさわしい鮮やかな視覚効果が生じる組み合わせもあれば、効果を判別しがたい組み合わせもあります。PDFのさまざまなブレンドモードによる視覚効果に興味がある場合は、このシンプルでインタラクティブなデモンストレーションをご覧ください。
RGBブレンドモードによる画像の見た目(Adobe PDF 1.4.より)
CMYKブレンドモードによる画像の見た目(Adobe PDF 1.4.より)
近年PDF 2.0で導入された仕様変更(ISO 32000-2:2020を参照)には、注釈用の透明効果とブレンドモード属性が含まれており、下層のドキュメントと高度なブレンドを行って、注釈を表示させることができます。さらに、PDF 2.0では、特殊なブレンドモードである「Compatible」や、Graphics State Parameter Dictionaries(グラフィックスステートパラメータ辞書)で「BM」キーに指定された一連のブレンドモードなど、初期のバージョンに採用されていたものの業界標準とならなかった仕様の一部が非推奨となっています
ネイティブな透明効果やブレンディングは、画像技術の中でも特に複雑なため、サポートが成熟するまでに時間がかかりました。もちろん、当時からアドビのアプリケーション群がサポートしていましたが、他のファイル形式やプラットフォームがPDFに匹敵する機能をサポートするようになったのは、ずっと後のことです。SVGは、PDF 1.4で最初に定義されたものと同様の、ポーターとダフによる一連の合成演算子と、より高度なフィルターモデルを含む高度な合成ブレンドモードのセットを、かなり遅れて採用しました。ほぼ同時期に、CSSはPDFと同様のブレンドモードサポートを導入することで、高度な透明効果に対応する姿勢を示しました。さらに最近では、画面表示用のAppleのSwift UIフレームワークが、PDFが定義しているのと同じセットのブレンドモードを定義しました。Wikipediaの「ブレンドモード」のページに列挙された参考文献の大部分は、PDF 1.4が最初にリリースされてから約10年後に記述された内容であるというのも、興味深いところです。アドビはこの分野でも技術革新を牽引してきました。
まとめ
ネイティブな透明効果は、PDFが提供するポータブルドキュメント・エクスペリエンスの核心部分であり、かつ広範囲で生成されていることから、今ではすべての高機能PDFビューアおよびレンダリングエンジンでサポートされています。
現在では、半透明エフェクトの作成は容易なものとなりました。デバイスを問わないネイティブサポートによって、重なり合った画像、ドロップシャドウ、変則的な形状の画像を含む多くの広告やウェブサイト、ドキュメントにおいて、半透明エフェクトを日常的に目にするようになっています。20年を経た今、2001年にアドビがラディカルな技術変革を導入しPDFの常識を「破壊する」という思い切った行動を取ったことが、透明効果に対する現代のユーザーの期待値を高める重要な契機となったと考えています。
本ブログは、2022年1月31日に米国アドビブログで公開された記事の抄訳です。