お絵描きソフトInkscape(インクスケープ)の使い方を初級レベルから上級レベルまで広く紹介しています。
情報追加のリクエストや分かりにくい点があれば下のCONTACTフォームからどうぞ。

InkscapeがらみでCMYKモデルについて整理してみた

 このページでは、CMYKカラーモデルに関連する基本的な知識をまとめてみたいと思います。

(2022.11.15更新)

はじめに

 お絵描きツールを使って作った絵をカラーで印刷するときに、色をどういう形式(カラーモデル)のデータにして印刷してもらうかが重要であることを今頃になって知りました。ネット上で利用可能な印刷サービスなどにお願いして印刷してもらうときに正しい形式(カラーモデル)を使わないと、印刷結果の色とお絵描きツールの画面上で見ている色が違うものになってしまうのですね。

 会社で使うプレゼン資料などのカラー印刷の場合は、編集時に画面で見ていた色と多少違う色で印刷されても(例えば写真が含まれていたとしても)そんなに気にならないし、実際カラー印刷の色は画面の色とずいぶん違うものになっているなあというのも実感としてあります。

 しかし、例えば年賀状やカラーチラシを印刷したいときは、それで満足とは言えなさそうです。

RGBとCMYK

 ディスプレイ画面のほうの色はRGBで表現される形式を使っていることは知ってました。光の三原色の強さを表す形式なのですから分かりやすいです。

 一方、印刷時の色はCMYKと呼ばれる形式でデータ化されることが多いそうです。こちらは「絵の具の三原色+黒」に相当するもので、印刷するときも「C」と「M」と「Y」と「K」の数値の比率でインクを混ぜて色を再現しているのだそうです。

 だからInkscapeのようなお描きツールの画面を見ながらRGBの値を使って設定した色を印刷するときは、人間にとっての見た目の色を変えずにRGBの値をCMYKの値に変換する必要があるわけです。

 で、困ったことに、RGBの値を見た目の色を変えずにCMYKの値に変換することは完璧にはできないらしいです。CMYKのほうが表現できる色の種類が少ないから、というのが最大の理由らしいですが、RGB値を入力するとCMYK値を出力してくれる単純な数式(変換関数?)がないのも理由らしいです。

でもRGB値とCMYK値の変換は普通に行われている?

 RGBCMYKとの関係を調べようと検索していると、RGB値とCMYK値との変換をやってみせてくれるサイトがいくつか見つかります。

 じゃあ見た目通りの色で印刷したいときも、編集時に画面上で見ていた色のRGB値をそのようなサイトでCMYK値に変換すればいいじゃないか、という気がしてきますが、どうもここで言っている変換は「便宜的なざっくりした変換」にすぎなくて、赤っぽいRGB値は赤っぽいCMYK値に変換するといった程度のものらしく、見た目が同じ色に変換できているわけではなさそうです。こういう「ざっくりした変換」ではCMYKのほうがくすんだ色に変化してしまうことが多いのだとか。

見た目の色を保ちつつカラーモデルを切り替えるには?

 見た目の色は、何の上に表示した色を見ているのかでも当然違ってくる(紙の種類でも違ってくる)ので、ディスプレイの表示色と紙に印刷したときの表示色とを揃えるのが難しいのは簡単に想像できます。

 色を扱うツールの世界でその問題をどうやって解決しているのかというと、どんな色も表現可能な共通のカラーモデル(色空間)の値に一旦変換して入出力や送受信を行うという方法です。データ一般の互換性を保つための手順として情報処理システムの定石といってもよさそうな手順ですが。

 共通のカラーモデルさえ決まっていれば、何に表示するかに応じて決まる個々のカラーモデルの値との変換を行えばよいだけです。

 さらに、共通のカラーモデルの値とそれ以外のカラーモデルそれぞれの値との対応関係を定義したデータを、これまた標準化された形式のファイルに格納して共有することにすれば、ディスプレイベンダやプリンタベンダが自分のハードウェアに特有のカラーモデルとの対応関係を定義したファイルをそれぞれ提供することができて、色を入出力する処理の中でそのファイルに定義されている対応関係を参照しながら互いに変換すればよいというわけです。

 この共通のカラーモデルのことを、一般に「プロファイル接続空間 (PCS)」と呼ぶそうです。

 そして、そのようなファイルの標準形式として、ICC(インターナショナル・カラー・コンソーシアム)という標準化団体が決めた「ICCプロファイル」という形式があって、この「ICCプロファイル」では、「プロファイル接続空間 (PCS)」として「CIELAB」と呼ばれるカラーモデルが採用されているそうです。

 だから、使っているディスプレイのICCプロファイルのファイル(ややこしい!)と、印刷先にしようとしているプリンタのICCプロファイルのファイルをダウンロードしてきて、お絵描きソフトに組み込めば、ディスプレイのRGB値をプリンタのCMYK値に変換することができるというわけです。もちろん、ICCプロファイルを組み込む機能がお絵かきソフト側でサポートされていなければどうにもなりませんが。

 ちなみにプロファイルを使って色変換を行う機能をサポートしているシステム(ソフトウェア等)をカラーマネジメントシステム(CMS)と呼ぶそうです。色変換を行う必要のあるツールにはもちろんいろんな種類があるので、「ソフトウェアAもプリンタBもカラーマネジメントシステムだ」という使い方をするのでしょうか。

CMYKでファイル保存できれば大丈夫なのか?

 Inkscapeとカラー印刷の関係をネットで調べていると、色をCMYKで表したデータで保存できれば問題なし!という空気を感じるのですが、CMYKで表した色が、編集時のディスプレイ画面と、印刷時の紙面とで同じになるかどうかは、CMYKで保存できるかどうかだけじゃないと思うので、どうもすっきりと理解した気になれません。

 編集時にCMYKの値で設定した色でも、画面に表示する直前にRGBに内部で変換してから表示しているはずで、CMYK→PCS→RGBという変換がプロファイルを使って適切に行われていないと、印刷時の色は編集画面上で見ている色と全然違う見た目のものになってしまうし、CMYKの値がどんな色で印刷されるかも印刷するそのときにプリンタ側でどんな処理をするかで変化してしまうような気も。

 結局、お絵描きソフトはCMYK値で色の設定を受け付け、その内部ではCMYK値で記憶して、画面表示時にRGB値に変換して見た目の色を確認し、ファイルへの保存はそのままCMYK値で行っておいて、印刷時には「CMYK(編集時)→PCS→CMYK(印刷時)」という変換がそのときのプリンタのプロファイルを使って行われればいいということなのでしょうか。もちろん、プリンタのプロファイルがお絵描きソフトのCMYK値保存時のプロファイルと同じものであれば、保存時のCMYK値でそのまま印刷できるのは当然ですが。

 CMYK(印刷時)への最終的な変換がどうせ必要なのであれば、CMYK(編集時)でなくてもRGBのままで保存してもいいのかもしれませんが、CMSであってもRGB→CMYKの変換のところでの見た目の色のズレが大きいように思うので、CMYKで保存したほうが結局画面上の色と印刷時の色を近づけることになるのだろうなとなんとなく理解してみました。

なぜPCSの値でデータ交換しないの?

 ここまでくると、色データを交換するときは、PCS(例えばCIELAB)の値でファイルに書き込んで交換すればよくない?という気がしてくるのですが、そういうことをやっているという話はネット上で確認できてません。PCSの形式で交換すれば同じ見た目の色を交換していることになるのだから、あとは双方のデバイスの色出力の性質を表すプロファイルを作るなり入手するなりしてそれぞれで変換すれば同じ色を扱うことになるんじゃないの?と単純に思ったのですが、何か勘違いしているのかもしれません。データサイズが大きくなってしまうのかもしれません。

InkscapeはCMYKカラーモデルをサポートしていないの?

 ネットで検索すると「InkscapeはCMYKをサポートしていない」「InkscapeではCMYKを扱うのはムリ」という情報がヒットします。でも、Inkscapeのフィル/ストロークダイアログには、次のようなRGBで色を設定する画面とは別のCMYKで色を設定する画面もあるので、「サポートしていない」は言い過ぎのようにも思います。「サポートが十分でない」とは言えるのかな?


 また、環境設定ダイアログに入出力 > カラーマネジメントというタブがあるし、ドキュメントのプロパティダイアログにも、というタブがあって、カラープロファイルについて設定することができますし、表示メニューの下にもカラーマネジメントモードで表示するというチェックボックスがあるので、CMYKモデルについて「サポートしていない」と言うほどに何にもできないということでもなさそうに思います。

 InkscapeがCMYKモデルをどのようにサポートしているのかについては、「InkscapeのCMYK対応機能の詳細」のほうでまとめていこうと思います。