(2017年9月7日更新)前回のまとめから時間が経過し、状況にいくらか変化が生じてきていること、伝聞に基づく検証を伴わない情報が多く流通しているとみられる現状を考慮し、あらためてまとめを書き直すことにしました。
Webを通じて触れることのできる、色々な方のコンテンツ・作品を自分の環境において発信者の意図に沿ったかたちで閲覧・鑑賞できているかを考えるためのひとつの材料としてこの記事を活用していただければ幸いです。
ご覧になる際は以下の点にご注意ください。
- 記載の情報は執筆時点での最新情報です。必ず記事の投稿・更新日時を確認してください。
- 複数のプラットフォームに対応したブラウザについてはWindows版の情報を記載しています。他のプラットフォームでは状況が異なる可能性があります(読者からの情報提供があればできるだけ反映させるようにします)。
- 検証環境はWindows 7 Professionalです。他のバージョンのWindowsで検証済みかつ結果の異なるものについてはその旨記載します。
ざっくりまとめると……
- 現行のOSを使っているならば、あなたもカラーマネジメント表示対応ブラウザを使っている可能性が高いです。もはや他人事ではありません
- モニタのプロファイル作成はv2・Matrixタイプで
特にこだわりや好みがないのであればFirefoxかSafariを使いましょう- 大事なコンテンツはプライマリモニタで鑑賞を
カラーマネジメント表示対応の道程
詳細な年月日まで調べ切れませんので順番だけ示しておきます。モバイル(スマホ)向けは含みませんのでご注意。
- Mac版Internet Explorerが埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Safariが埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Firefox3がカスタム版Little CMS使用によるカラーマネジメント表示対応、埋め込みプロファイルを持たない画像や非画像はsRGBと見なすが、カラーマネジメント表示自体がデフォルトでオフになっていた
- Firefox3.5でカラー変換エンジンをLittle CMSから独自開発のqcmsに変更。カラーマネジメント表示がデフォルトで有効化されるが、プロファイルを持たない画像や非画像はSafariやMacIEと同様にスルーする仕様に変更
- Firefox8でv4プロファイル・LUTプロファイルを使用可能にするオプション設定(デフォルトでオフ)が追加される
- Internet Explorer9で埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Chrome16でMac版のみ埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Opera12でLittle CMS2使用による埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Chrome22でMac版以外も埋め込みプロファイルを持つ画像のカラーマネジメント表示に対応
- Blinkを採用したOpera15公開
- OS X 10.8へのアップグレードに伴いSafariにて埋め込みプロファイルのない画像や非画像がsRGBと見なされる仕様に変更
- Chrome61で埋め込みプロファイルのない画像や非画像がsRGBと見なされる仕様に変更
主要ブラウザの対応状況
画像 | 非画像 | プロファイルを持たない画像 | |
---|---|---|---|
Internet Explorer 11 | ○ | スルー | スルー |
Firefox 43 | ○ | sRGB(要設定変更) | sRGB(要設定変更) |
Google Chrome 61 | ○ | sRGB | sRGB |
Opera 21 | ○ | スルー | スルー |
Opera 12 | ○ | スルー | スルー |
Safari 7 | ○ | sRGB | sRGB |
Matrixプロファイル | LUTプロファイル | v4プロファイル | |
---|---|---|---|
Internet Explorer 11 | ○ | ○ | ○ |
Firefox 43 | ○ | ○(要設定変更)(注) | ○(要設定変更) |
Google Chrome 61 | ○ | × | × |
Opera 21 | ○ | × | × |
Opera 12 | ○ | ○ | ○ |
Safari 7 | ○ | ○ | ○ |
プライマリモニタからの取得 | マルチモニタ対応 | |
---|---|---|
Internet Explorer 11 | ×(sRGB固定) | n/a |
Firefox 43 | ○(設定で指定可能) | 未調査 |
Google Chrome 61 | △(注) | × |
Opera 21 | ○ | × |
Opera 12 | ×(sRGB固定) | n/a |
Safari 7 | ○ | 未調査 |
CMYK JPEG画像 | 変換エンジン | |
---|---|---|
Internet Explorer 11 | ○ | Microsoft CMM |
Firefox 43 | △ | qcms |
Google Chrome 61 | △ | qcms |
Opera 21 | △ | qcms |
Opera 12 | 未調査 | Little CMS2 |
Safari 7 | ○ | Apple CMM |
解説と補足
HTML要素への対応
最初の表は、カラーマネジメント表示が行われる対象についてまとめたものです。ICCプロファイルが埋め込まれた画像については、カラーマネジメント表示対応のブラウザすべてが対象としているので問題ないでしょう。しかし非画像のHTML要素とプロファイルを持たない画像の扱いは混乱が生じ始めています。
Webの標準に従うならば、CSSの仕様で指定のRGB値はsRGBであるとされていますので、これらの要素はsRGBとみなされモニタのカラースペースに変換されるのが「正しい」と言えますが、カラーマネジメント表示対応で先行したMac版Internet ExplorerとSafariがプロファイルを持つ画像のみ変換を行うという実装をして以来、長らくそれが「事実上の標準」仕様として定着してきた経緯があります。Firefoxも意図したものか偶然かはともかく当初はWeb標準に沿った仕様を採用していたところ、後にデフォルトの設定を事実上の標準に合わせる仕様変更を行っています。
ところが、これまでカラーマネジメント表示対応を先導してきたと言えるSafariがOS X 10.8搭載のバージョン6で非画像・埋め込みプロファイルのない画像をsRGBとして扱うようになりました。その後しばらくはブラウザの動向に変化はありませんでしたがGoogle Chromeもバージョン61で追随。今後どうなっていくのかが注目されるところです。
プロファイルの対応
2つ目の表は、各ブラウザがカラー変換エンジンを通して扱うことのできるプロファイルの仕様について比較しています。
- Matrixプロファイル
- Matrixプロファイルはモニタ用のプロファイルとしては一般的なもので、カラー変換に関係のない情報が含まれていなければ数100バイト~数キロバイトのファイルサイズとなります。Adobe RGBやsRGBなど作業用・データ交換用のRGBプロファイルも基本的にこのタイプとなります。
- LUTプロファイル
- LUTプロファイルはグレースケールのプロファイルやモニタのRGBプロファイル以外で使用されるタイプのプロファイルで、ファイルサイズは数100キロバイト~数メガバイトになります。通常Webで流通する画像でLUTプロファイルが埋め込まれることはありませんが、モニタのプロファイル作成時にうっかりLUTプロファイルを作成する設定にしてしまうとブラウザによっては適切なカラーで表示できないことになりますので注意してください。
- v4プロファイル
- ICCバージョン4系の仕様に含まれるタグやデータ型に対応していれば○ということになります。アプリケーションがv4プロファイルに対応していくこと自体は正しい流れだと思いますが、Webの世界においてはまだまだv2プロファイルで間に合っている感が強いですから現状で非対応だとしても低い評価を下すのは早計でしょう。
念のため補足しておきますが、MatrixかLUTかの区別とv2かv4かの区別はそれぞれ別の話です。したがってv2プロファイルにもv4プロファイルにもMatrixかLUTかの区別が存在するということになります。
モニタプロファイル
3つめの表はカラーマネジメントされたコンテンツをモニタのカラースペースにきちんと変換できるかどうかを示すものです。モニタの規定のプロファイルを適切に取得できれば問題ありませんが、取得できない(しない)場合は別のプロファイルが代わりに使われることになるため不適切な変換結果となってしまいます。
また、マルチモニタ環境ではそれぞれのモニタのプロファイルを取得した上で、さらにブラウザウインドウがどのモニタ上にあるのかを判断してそのモニタのカラースペースへと変換できなければなりません。万全を期すならばウインドウが複数のモニタにまたがって配置されているケースも考慮すべきなので、シングルモニタ環境より対応コストはずっと高くつくことになります。
その他
CMYKの画像については、元々Webで流通すること自体イレギュラーだったわけですが、印刷用に作成されたデータをそのまま流用したいというのはおかしな話ではありません。CMS(コンテンツマネジメントシステムの方)や画像アップローダーなどのWebサービスを利用するのであればサーバ側でsRGBなどに変換して流すのが筋とはいえ、ブラウザ側で対応しているのであればそれはそれでありがたいところです(だからといってCMYK画像を表示できないブラウザはゴミである、という主張をするつもりは毛頭ありません)。ちなみに、表中の△は画像ファイルを読み込むことはできているがCMYKデータとして適切に扱えていない(または簡易なRGB変換で処理してしまっている)ことを示します。
カラー変換エンジンとして何を採用しているかは、使用可能なプロファイルの種類や変換のスピードや演算精度に関係してきます(だからといって特に気にする必要はありません)。OS側のカラーマネジメント関連APIを直接、またはグラフィックサブシステムを通じて利用するグループと、サードパーティー製の変換ライブラリを同梱して利用するグループとに大別されます。前者の場合、変換エンジンに相当するCMMを(自動または手動で)変更できるのかという話にもなってきますが、今回は十分に調査できていないため暫定情報として既定のCMMという記載になっています。一方、後者の場合もともと選択肢に上るような変換エンジンは数が限られていて、Little CMS、IccProfLib、qcmsくらいしかありません。当初はLittle CMSが採用される動きもみられたものの、GeckoとBlinkの2大レンダリングエンジンがともにqcmsを採用していることから、大きな問題にぶつかりでもしない限りqcms1本に絞られていくのではないかと考えられます。
ブラウザ毎の対応状況・解説
Internet Explorer
バージョン | 8 | 9 |
---|---|---|
画像 | × | ○ |
プロファイルのない画像 | スルー | |
非画像 | スルー | |
LUTプロファイル | n/a | ○ |
v4プロファイル | n/a | ○ |
モニタプロファイル | n/a | sRGB |
変換エンジン | n/a | Microsoft CMM |
Internet Explorerはバージョン9で画像のカラーマネジメント表示に対応しました。プロファイルが埋め込まれていない画像や非画像に関しては変換を行わず元のRGB値を維持します。
現行バージョンの11に至るまで、モニタのカラースペースではなくsRGBへと変換されてしまう既知の問題があります。高色域モニタのユーザーには影響が大きく問題を認識されている方も多いと思われますが、わかりにくいというだけでモニタのプロファイルを設定している全てのユーザーに等しく影響がありますので、画像コンテンツをきちんと表示させたい用途では使用を避けた方がよいでしょう。
個人的な推測となりますが、IE9は画像のカラーマネジメント表示に対応させたというよりは画像の処理をGDI+ベース(?)からWICベースに移行した結果として副作用的に対応してしまった、もしくは移行したついでに小規模な修正を追加して簡易的に対応させたというのが真相なのではないかという気がしています。言い換えると「元々正攻法できちんと対応させるつもりがなかった」のではないかということですね。もちろん、指摘しているのはIE開発チームの怠慢の可能性であってWindowsはクソであるとかいう話ではありませんのであしからず。
参考
Firefox
バージョン | 2 | 3 | 3.5 | 8 |
---|---|---|---|---|
画像 | × | ○ | ||
プロファイルのない画像 | スルー | sRGB | sRGB(要設定変更) | |
非画像 | スルー | sRGB | sRGB(要設定変更) | |
LUTプロファイル | n/a | ○ | × | ○(要設定変更) |
v4プロファイル | n/a | △ | × | ○(要設定変更) |
モニタプロファイル | n/a | ○(設定で直接指定可) | ||
変換エンジン | n/a | Little CMS | qcms |
Firefoxはバージョン3で初めてカラーマネジメント表示に対応しましたが、この時点ではデフォルトで無効化されており、ユーザーによる設定変更が必要でした。パフォーマンスへの影響が懸念されたためということもあるでしょうし、バージョンアップで表示に変化が生じてバグではないかと騒がれるのを避ける意図もあったかもしれません。
バージョン3.5では、パフォーマンスの改善や脆弱性対策のタイムラグなどの都合によりLittle CMS(バージョン1.xのカスタム)から独自開発のqcmsへと変換エンジンが変更されました。その影響でICCプロファイルの対応度については後退してしまったものの、後のバージョンではオプション扱いながら改善してきています。
また、同じく3.5以降では変換の対象をデフォルトで埋め込みプロファイル付きの画像に限定する「事実上の標準」に合わせた仕様変更とセットでカラーマネジメント表示のデフォルト有効化が行われています。
カラーマネジメント関連の設定
ロケーションバーにabout:config
と入力して設定ページに入り、gfx.color_management
で始まる項目の値を変更する方法と、Configuration Maniaなどのアドオンから変更する方法とがあります。設定項目は以下の通りです。
- display_profile
- お使いのモニタのプロファイルのフルパスを指定します。値が空の場合はプライマリモニタの既定のプロファイルを起動時に取得します。
- mode
- 0はカラーマネジメント表示を行いません。1は全てのHTML要素を対象にカラーマネジメント表示を行い(プラグインなど例外あり)、2はタグ付けされた(プロファイルが埋め込まれた)画像のみを対象にカラーマネジメント表示を行います。
- rendering_intent
- 各コンテンツのカラースペースからモニタのカラースペースへ変換する際のレンダリングインテントを指定します。-1は画像ファイルの指定に従う(詳細未確認)、0は知覚的、1は相対的な色域を維持、2は彩度、3は絶対的な色域を維持に対応します。
- enablev4
- ICCプロファイルの対応互換性を改善します。デフォルト値のfalseで問題ないですが、本来カラーマネジメント表示になるはずなのにならないコンテンツがある場合はtrueに変更すると改善する可能性があります。
LUTプロファイルの対応
現行バージョンのFirefoxではLUTプロファイルは画像埋め込みの場合に限り有効です。モニタのプロファイルにLUTプロファイルを作成・設定している場合は無視されsRGBのプロファイルで代用されますのでご注意を。Argyll(DispcalGUI)であればMatrix/LUT両方の情報を持ったプロファイルを作成できますので、必要であればそのようにしておくとよいでしょう。
以下参考:
@run___ 遅くなりましたがLUTプロファイルの件です。最終的にソース読む羽目に……モニタのプロファイルについてはqcms_profile_is_bogus()でのチェックにひっかかって弾かれてしまうように見えます。JPEG/PNGデコーダーの方では(続く
— やまかわ aka やんま ま (@yamma_ma) 2016, 1月 6
@run___ qcms_profile_is_bogus()は呼ばずにデコーダー側で簡易にチェックしているのみで弾かれずに通っているようです。なので現状では画像の埋め込みプロファイルはLUT OKでモニタのプロファイルはNGと推測されます。
— やまかわ aka やんま ま (@yamma_ma) 2016, 1月 6
@run___ (参考)
https://t.co/5Sx4axU9BO
https://t.co/055Rk9lpQn
https://t.co/8hNnhvrQKB
https://t.co/JZdMuTezKF
— やまかわ aka やんま ま (@yamma_ma) 2016, 1月 6
Google Chrome
バージョン | 15 | 16(Mac) | 22(Win/Linux) | 61 |
---|---|---|---|---|
画像 | × | ○ | ||
プロファイルのない画像 | スルー | sRGB | ||
非画像 | スルー | sRGB | ||
LUTプロファイル | n/a | 未調査 | × | |
v4プロファイル | n/a | 未調査 | × | |
モニタプロファイル | n/a | 未調査 | ○ | ※ |
変換エンジン | n/a | 未調査 | qcms |
Google ChromeはFirefox向けに開発がスタートしたqcmsを採用し、バージョン22より画像のカラーマネジメント表示に対応しました。例外的に、Mac版に関してはバージョン16から対応となっているため、こちらはqcmsを使わずOS側のAPIを使用している可能性があります。
プロファイルを持たない画像や非画像のHTML要素に関してはバージョン61よりsRGBと見なすよう仕様変更されています(設定変更で旧仕様に戻すことも可能)。
具体的にどのバージョンから該当するか不明ですが、少なくともWindows版ではマルチモニタ環境においてプライマリモニタ以外からプロファイルを取得してしまう不具合があります。
Opera
バージョン | 12 | 12.10 | 15 |
---|---|---|---|
画像 | × | ○ | |
プロファイルのない画像 | スルー | ||
非画像 | スルー | ||
LUTプロファイル | n/a | ○ | × |
v4プロファイル | n/a | ○ | × |
モニタプロファイル | n/a | sRGB | ○ |
変換エンジン | n/a | Little CMS2 | qcms |
OperaはPrestoエンジンベースの12.10においてLittle CMS2を採用して独自にカラーマネジメント表示対応を果たしましたが、モニタのプロファイルを取得しない(できない?)問題を残したままバージョン15にてBlinkエンジンベースへと移行しました。Blinkエンジンはqcmsによる画像のカラーマネジメント表示対応ですので、現行バージョンではその仕様に沿った挙動を示しています。
Safari
(あとで書く)
コメント
コメント一覧 (5)
Chrome 68でカラー変換の結果が異常(全体的に黄色っぽく)になり、回避策としてハードウェアアクセラレーションを無効にする……という話は定点観測で捕捉していますがカラーマネジメントが働かないというのは初耳です。
何か条件があるんでしょうかね……。
・Windows 10 Pro 1803 Build 17134.191
・Chrome バージョン: 68.0.3440.84(Official Build) (64 ビット)
有効
https://www.cat-ears.net/wp-content/uploads/2018/08/chrome-hardware-acceleration-on.png
無効
https://www.cat-ears.net/wp-content/uploads/2018/08/chrome-hardware-acceleration-off.png
こちらでもざっと見てみましたが……sRGBに変換されてそうですね。
色々なプロファイルを埋め込んだものを食わせてみてどうなるかチェックしてみてください。