コンテンツにスキップ
getnextpdf.com

色、プロファイル、そしてあなたの赤が私の赤ではない理由

Spec: ISO 32000-2, §8.6Spec: ISO 15930, PDF/X

PDF における色は、固定された感覚ではありません。それは命令であり、その命令があなたのノートパソコン・スマートフォン・印刷機で同じ赤を生み出すかどうかは、その色がどう記述されたかに完全に依存します。このページが扱うのは、単にデバイスに何をすべきかを伝えるだけの色と、実際にどう見えるべきかを述べる色との違いです。

ブランドの赤を一つ選んでください。一度設定します。それを安価なオフィス用モニターで見て、次に明るい部屋の OLED スマートフォンで見て、さらにオフセット印刷機から出てきたものを見てみてください。三つの赤になります。ときには明らかに異なる三つの赤です。誰も数値を変えてはいません。数値が物語のすべてであったことなど、最初からなかったのです。

何気ないドキュメントなら、これは肩をすくめて済む話です。しかし、ロゴ、規制対象のラベル、カタログ内の写真、あるいは数十年残ることを意図した記録にとっては、ずれる色は欠陥です。そのコストは抽象的なものではありません。それは刷り直し、却下された校正刷り、あるいはそのページがもはやオリジナルと一致しないアーカイブです。解決策はより良い数値ではありません。その数値が何を意味するのかについて真実を語ることです。

  • デバイスカラー は、デバイスが受け取る制御値によって色を名付けます。したがって結果は、そのデバイスがそれらをどう解釈するか次第です(Spec: ISO 32000-2, §8.6.4)。DeviceRGBDeviceCMYKDeviceGray はデバイスカラースペースです。同じ数値、異なるハードウェア、異なる色。
  • キャリブレーション済みの ICC ベースの色 は、それらの数値を、埋め込まれたプロファイルを通じて、測定済みのデバイス非依存の基準に結びつけます(Spec: ISO 32000-2, §8.6.5.5)。これでドキュメントは、単なる制御値のレシピではなく、意図された 色を再現するのに十分な情報を運ぶようになります。
  • ICC プロファイル は、その測定済みのマッピングです。あるデバイスの数値 — あるいは標準カラースペースや出力条件の数値 — が、人間の目が知覚する色とどう関係するかを、デバイス非依存の接続スペースに結びつけて表します。
  • レンダリングインテント は、ある色がデバイスの再現範囲の外にあるときに何をするかというポリシーです。どのデバイスもすべての色を表示できるわけではないからです。
  • 出力インテント は、ドキュメントが、それが用意された出力条件をあらかじめ宣言するものです(Spec: ISO 32000-2, §14.11.5)。印刷グレード(PDF/X)とアーカイブ(PDF/A)のワークフローはこれに依存します。

問題の正直なバージョンから始めましょう。DeviceRGB は色を含んでいません。それが含むのは 0 から 1 までの三つの数値と、何らかの画面がそれらを光に変えてくれるという暗黙の前提です。バックライトが異なり、パネルが異なり、キャリブレーションが異なる二つの画面は、同じ三つの数値を目に見えて異なる光に変えます。これは PDF のバグではありません。それが「デバイスカラー」の意味するところであり、標準もそれについて率直です。デバイスカラースペースは、絶対的な見た目によってではなく、デバイスが受け取る値によって定義されます(Spec: ISO 32000-2, §8.6.4)。

キャリブレーション済みの色は、基準を加えることでそのギャップを埋めます。ICC プロファイルは、デバイスやカラースペース — モニター、プリンター、印刷機、あるいは sRGB のような標準スペース — を特性評価し、その生の数値が、人間の視覚を近似するデバイス非依存の接続スペースにおける色とどう関係するかを記録した結果です。そのプロファイルを埋め込むと、数値は私的な方言ではなくなります。それは、誰もが合意できる何かに結びついた言明になります。これこそが、ICC ベースのカラースペースが運ぶものです(Spec: ISO 32000-2, §8.6.5.5)。色と、それが何を意味するかを述べる測定済みのマッピングです。

二つ目の、避けられないやっかいな点があります。印刷機が印刷できる色の集合は、スマートフォンが表示できる集合とは異なり、どちらも人間の目が見ることのできる集合全体とは異なります。ある色が、ターゲットデバイスが再現できる範囲の外にあるとき、何らかの選択をしなければなりません。最も近い再現可能な色にクリップするか、関係性が保たれるように一連の色をまとめてシフトするか、です。その選択が レンダリングインテント です。丸めの偶然ではなく、その仕事のために選ばれた意図的なポリシーです。写真と企業ロゴはしばしば異なるインテントを求めます。一方は滑らかなグラデーションを重視し、もう一方は正確な色見本に当てることを重視するからです。

最後に、特定の行き先へ向かうドキュメントは、それをそう述べることができます。出力インテント は、ファイルが、それが用意された出力条件を宣言するものです。典型的には、印刷条件やデバイスを名指す、埋め込まれた ICC 出力先プロファイルです(Spec: ISO 32000-2, §14.11.5)。それは、印刷業者にファイルを手渡すことと、「私は この 印刷機向けに作られました」と述べるファイルを手渡すこととの違いです。印刷交換プロファイルはそれを必須とします。PDF/X ファイル(ISO 15930 ファミリー)は出力インテントを運ぶことが求められ(Spec: ISO 15930, PDF/X)、PDF/A も同じ仕組みに依存します。これにより、アーカイブされたファイルのデバイス依存の色は、生成元の環境がなくなったずっと後の遠い将来でも解釈可能なまま保たれます。

  1. Name the colourChoose a colour space. DeviceRGB/CMYK/Gray name control values; an ICC-based space anchors them to a device-independent reference (ISO 32000-2 §8.6).
  2. Anchor it (optional but decisive)Embed an ICC profile so the numbers carry their measured meaning, not just a device recipe (ISO 32000-2 §8.6.5.5).
  3. Reconcile to the deviceA rendering intent decides what happens to colours the target device cannot reproduce — clip the nearest, or shift the range to preserve relationships.
  4. Declare the destinationAn output intent states the output condition the document was prepared for, as PDF/X and PDF/A workflows require (ISO 32000-2 §14.11.5).
How a color travels from your code to a faithful result: it is named in a colour space, optionally anchored to a measured reference by an ICC profile, reconciled to the target device through a rendering intent, and interpreted against the output condition the document declares.

この連鎖における NextPDF の仕事は、標準に忠実であることです。カラースペース、埋め込みプロファイル、出力インテントを、フォーマットが定義するとおりに書き出し、下流のツール — 印刷業者の RIP、アーカイブバリデーター、ビューアー — が、意図されたとおりのものを正確に読み取れるようにします。NextPDF は宣言を生成します。デバイスのふりをするわけではありません。

以下に示す形は、特定の API ではなく、その判断をスケッチしたものです。要点は、行き先が推測されるのではなく、述べられている という点にあります。

<?php
declare(strict_types=1);
use NextPDF\Contracts\PdfDocumentInterface;
/**
* Prepare a print-bound document that declares its intended output condition.
*
* The colour numbers alone do not fix the appearance. Declaring the output
* intent — the print condition the file was built for — is what lets a press
* interpret those numbers faithfully (ISO 32000-2 §14.11.5).
*
* @param PdfDocumentInterface $doc A composed document.
* @param string $iccProfileBytes The destination ICC profile for the
* target print condition.
*
* @return string The document bytes, carrying a declared output intent.
*/
function prepareForPress(
PdfDocumentInterface $doc,
string $iccProfileBytes,
): string {
// Declare the output condition explicitly. The document now states the
// device/print condition it was prepared for, instead of leaving its
// device colours open to interpretation.
$doc->setOutputIntent(
identifier: 'Custom press condition',
iccProfile: $iccProfileBytes,
);
return $doc->output();
}

色は変わっていません。変わったのは、それらがどう見えるべきだったのかをファイルがいま述べているという点です。それこそが、印刷機やバリデーターが行動の根拠にできる唯一のものです。

「同じ 16 進数値だから、同じ色だ」。16 進数値はデバイス制御値の集合です。プロファイルや出力インテントがなければ、それはキッチンを指定しないレシピであり、どのキッチンでも違う味になります。二つのファイルは同一の RGB 数値を運びながら、正直に異なる色でありうるのです。一方は数値に意味を与える文脈を宣言し、もう一方はそれを成り行きに任せているからです。

二つ目の罠は、DeviceCMYK が自動的に「印刷準備完了」を意味すると思い込むことです。そうではありません。CMYK はやはりデバイスカラーです。印刷機向けの形をしてはいますが、プロファイルや出力インテントが実際の印刷条件を名指すまで、キャリブレーションされてはいません。

NextPDF は標準に忠実な色を生成します。デバイスカラースペースと ICC ベースのカラースペースを書き出し、PDF/X 系および PDF/A のワークフローのために出力インテントを宣言します。フォーマットが定義するとおりにです。それが仕事のうちの生成する側の半分であり、ドキュメントが自ら担える側の半分です。

NextPDF ではないものは、カラープルーフィングシステムです。あなたのモニターを測定したり、画面上で印刷機をソフトプルーフしたり、印刷結果が意図した色見本に許容範囲内で一致することを認証したりはしません。それらはカラーマネージドな校正チェーンと、それを運用する人々に属します。エンジンはファイルに正しいことを述べさせます。最終的なデバイスがそれを尊重するかどうかは、下流で、デバイス、関与する ICC プロファイル、そして — PDF/X と PDF/A については — バリデーターによって決まるのであって、生成側によって決まるのではありません。

  • What a PDF actually is — これらのカラースペースや出力インテントが内部に存在するオブジェクトモデル。
  • Archival and PDF/A — 長期保存がなぜデバイス非依存の色と出力インテントに依拠するか。
  • The standards landscape — ISO 32000-2、PDF/X(ISO 15930)、PDF/A(ISO 19005)が互いにどこに位置するか。
  • PDF 2.0: what changed — 現行のフォーマット版が色と適合性をどう枠付けるか。
  • デバイスカラースペース — デバイスが受け取る制御値によって名付けられる色(DeviceRGBDeviceCMYKDeviceGray)。見た目は解釈するデバイスに依存する(ISO 32000-2 §8.6.4)。
  • キャリブレーション済み / ICC ベースの色 — 埋め込まれた ICC プロファイルを通じてデバイス非依存の基準に結びつけられた色。意図された見た目がデバイス間で再現可能になる(ISO 32000-2 §8.6.5.5)。
  • ICC プロファイル — 特定のデバイスの数値と、人間の視覚を近似するデバイス非依存の基準との間の、測定済みのマッピング。
  • レンダリングインテント — ターゲットデバイスが再現できない色を扱うためのポリシー。最も近い再現可能な色にクリップするか、色の関係性を保つために範囲をシフトする。
  • 出力インテント — ドキュメントが、それが用意された出力条件を宣言するもの。典型的には埋め込まれた出力先 ICC プロファイルを介する(ISO 32000-2 §14.11.5)。PDF/X が必須とし、PDF/A が用いる。
  • PDF/X — PDF の ISO 15930 印刷交換プロファイルファミリー。PDF/X ファイルは、ターゲット印刷条件を名指す出力インテントを運ばなければならない。