Gran Paradiso(次期 Firefox 3)最近の話題

2007年8月12日(日) 22時56分 by level
B ?

カラーマネージメント(CMS)、カラープロファイル

Firefox でもカラーマネージメント(CMS)が利用できるようになりました(Bug 16769)。gfx.color_management.enabledtrue に設定して再起動すると有効になりますが、現状では CMS をオンにするとカラープロファイルを持つ画像は正しく表示されますが、Firefox 全体でそれ以外の色に影響を与えてしまいますBug 390030サンプル)。これは gfx.color_management.display_profile に sRGB カラープロファイルを設定すると回避できます。Windows 環境であれば "C:\\WINDOWS\\system32\\spool\\drivers\\color\\sRGB Color Space Profile.icm" が利用できると思われます。追記:コメント欄のくでんさんの解説も参照してください。

カラーマネージメントの効果の確認は Mozilla Links で紹介されている ICC のテストページでできます。上の4分割された風景写真が正常に表示されれば OK です。他にも miyahan.com など。

プラグイン管理

従来、プラグイン(flash や Java など)を Firefox 上から個別に管理することはできませんでしたが(唯一、about:plugins で詳細なリストを表示することはできましたが)、アドオンマネージャから管理できるようになりました(Bug 339056)。

Plugin 管理

ただ、Windows では、ひとつのプラグインが複数のファイルで提供されており、それが個別にリストに表示されてしまいます。私の環境では Java や QuickTime ではまったく同じものが7個も表示されています。これは使い勝手において非常に問題があります。(8/19追記:Windows 版でもまとめて表示されるようになりました)

ところで、プラグインマネージャのアイコンが顔に見えてしょうがないというバグが登録されています。個人的にはこのままでもいいのではないかと思っていますが、どうなるでしょうか?

検索ボックスのリサイズ

Resizer ツールバーのアイテムに Resizer というのが追加になって、デフォルトではロケーションバーと検索ボックスの間に配置されます(Bug 267831、Windows では見た目があれなのはそのうちテーマの方で対応されるでしょう)。このリサイザを左右にドラッグするとロケーションバーと検索ボックスの境界を移動させることができます。従来は検索ボックスのサイズは調整できなかったのがようやく任意のサイズに設定できるようになりました。

Resizer

この Resizer、基本的には検索ボックスのサイズを変えるためのものと思われますが、任意の場所に配置してぐりぐり動かすとアイコンをひしゃげさせたりすることができます。

ダウンロードマネージャ

ダウンロードマネージャの UI が更新されています(Bug 388517)。細かい部分の調整はこれからまだまだあるようです。

ダウンロードマネージャ
最終更新: 2008年2月9日(土) 22時24分

コメント (4)

1 8/13 00:18 くでん
(c1) [2007/08/13 00:18:29] by くでん

教えていただいたことと、実際触った感じだとモニタ用の既定のカラープロファイルが指定してある場合、それをcss 2.1に従ってsRGBに変換するので、その変換時に誤差が生じて色が変わるみたいです。これはユーザインターフェイル部も含めたGeckoが描画する部分すべてに影響します。
ですから、gfx.color_management.display_profileでGeckoが描画する部分に使うカラープロファイルが指定できるようになっているので、sRGBのカラープロファイルを指定してください、とお伝えしたわけです。これだとGeckoが描画する部分だけ指定したカラープロファイル(この場合だとsRGBのカラープロファイル)が使われます。(たぶん)sRGBからsRGBへの変換ですから色が変わらないわけです。
というわけで、(モニタ用の既定のカラープロファイルにsRGBのカラープロファイルを使っている環境を除いて)現時点でカラーマネジメントを試す場合はfx.color_management.enabledをtrueにしてgfx.color_management.display_profileでsRGBのカラープロファイルへのパスを指定してやるのが無難だと思います。
Windows XP SP2やWindows 2000 SP4だとsRGBのカラープロファイルをたいてい標準で持っていると思いますけど、ない場合やLinux環境・OS X環境でもAdobeからsRGBのカラープロファイルをダウンロードして適当なところに解凍して置いて、それを指定してやればいいはずです。なお、下のリンクにファイルがありますけど、現時点でのtrunkはなぜかこのリンクを開くとクラッシュしてしまいます。Firefox 2.0.0.xだとだいじょうぶなんですけど……
http://www.adobe.com/support/downloads/detail.jsp?ftpID=3145
ちなみにカラープロファイルの位置はWindows XPとWindows 2000で異なります。
【Windows XPの場合】
C:\WINDOWS\system32\spool\drivers\color\
【Windows 2000の場合】
C:\WINNT\system32\spool\drivers\color\
about:configからgfx.color_management.display_profileを指定する場合は\を自動的に\\に変換してくれますけど、user.jsから設定する場合はブックマークのパスを指定する場合と同じようにいちおう\を\\にしてやったほうがいいと思います。

2 8/13 06:38 level
(c2) [2007/08/13 06:38:18] by level

詳しい解説ありがとうございます。
XPのicmファイルをLinux環境に持っていくと問題なく表示できました。
しかし、現状ではとてもじゃないけどデフォルトで有効にすることはできませんね。
もったいない。なんでSafariのように何も設定なしにできないんでしょうね。

3 8/13 22:10 Ryo
(c3) [2007/08/13 22:10:17] by Ryo

いつも楽しく拝読させて頂いております。

Firefox3は楽しみにしています。
自分はMacユーザーなのですが、
Firefox でもカラーマネジメント(CMS)が利用できるようになると言うのは
Windows環境のみの話なのでしょうか? 
(自分のMac環境でFirefox2で見ても問題無い様でしたので。)

ところでFirefox2の「パスワードが盗まれる脆弱性」は、
どうなった情報は有りますでしょうか(^^?

4 8/16 11:19 あ
(c4) [2007/08/16 11:19:00] by

ちょっと勝手に補足。

まず、R と G と B の 3 つの値で色を表す場合(違う表し方もありますが、今回の件の説明には不要なので省略)、同じ色を表すものであっても、color space が異なれば値が変わります。
逆に、同じ RGB 値であっても、color space が異なるものであれば別の色を表すものになります。

おおざっぱな例で言うと、赤がくすんだ色のディスプレイで、RGB 値がそれぞれ 255 0 0 の表示をさせると、くすんだ赤が表示されます。
一方、鮮やかな赤が表示できるディスプレイで 255 0 0 を表示させると鮮やかな赤が表示されますから、「赤がくすんだ色のディスプレイでの 255 0 0」と同じ色を表示させるためには、G や B も少し混ぜないといけません。

つまり、入力側と出力側とで color space が異なるのであれば、値を変換してやらないと元通りの色になりません。
逆に言うと、本来の色にするためには、入力側の color space と 出力側の color space に従って、RGB の値を変換する必要があります。

ここで、「色が変わるとか変わらない」というのと、「RGB の値が変わるとか変わらない」とかいうのとを、混同するとわけがわからなくなります。

例えば CSS で rgb(○,△,□) と指定されていた場合、それは「sRGB の color space での ○ △ □」として扱いますから、その色を sRGB ではないところに出力するのであれば値を変換してやらないと、指定されたとおりの色になりません。

変換しないままでは本来の色になりませんから、CMS が無効の場合に見えている色は本来の色ではありませんし、本来の色にするためには CMS を有効にするだけでなく、入力側の color space、出力側の color space 共に正しい必要があります。

今回 Gecko に実装されたのは、大雑把に言うと「入力側のカラープロファイルから color space を取得」「出力側のカラープロファイルから color space を取得」「入力側と出力側の color space に従って、RGB 値を変換」ということになります。

> モニタ用の既定のカラープロファイルが指定してある場合、それをcss 2.1に従ってsRGBに変換するので、その変換時に誤差が生じて色が変わるみたいです。

というのは表現がおかしくて、sRGB に変換するわけではありません。
「sRGB で指定された色」と同じ色になるように、「出力側のプロファイルでの値」を求めているわけです。
これは誤差ではなくて正しい動作です。
(出力に sRGB を指定している場合に、0 が 1 になってしまったりするのは誤差だと思いますが。)

> 現状では CMS をオンにするとカラープロファイルを持つ画像は正しく表示されますが、Firefox 全体でそれ以外の色に影響を与えてしまいます

「影響を与えてしまいます」と書かれていますが、それはおかしなことではありません。
上記のように、正しい色にするためには RGB の値を変換する必要がありますから。

Linux でまるっきりおかしいのは、また別の話ですね。その設定のままでは、カラープロファイルを持つ画像も正しくは表示されないのではないでしょうか?

> ですから、gfx.color_management.display_profileでGeckoが描画する部分に使うカラープロファイルが指定できるようになっているので、sRGBのカラープロファイルを指定してください、とお伝えしたわけです。これだとGeckoが描画する部分だけ指定したカラープロファイル(この場合だとsRGBのカラープロファイル)が使われます。(たぶん)

というのもおかしくて、
カラープロファイル埋め込みの画像であっても、ユーザーインターフェース部分であっても、出力側のプロファイルとしては gfx.color_management.display_profile が使われます。
カラープロファイル埋め込み画像に対しては
(入力=その画像のカラープロファイル、出力=gfx.color_management.display_profile)であるとして値が変換されます。
CSS で指定された色(リンクの色や color picker の色も、Gecko においては CSS です) の RGB 値については
(入力=sRGB、出力=gfx.color_management.display_profile)であるとして値が変換されます。

なので、gfx.color_management.display_profile が sRGB であれば、入力側の出力側の color space が同じですから、(計算誤差を除けば)値が変わらないわけです。
(しかし、出力先が sRGB でなければ、それは本来の色ではありませんね。)

#入力=sRGB とするのは、CSS で直接 RGB 値を指定した場合はそれでいいんだけども、ユーザーインターフェースに良く使われる、OS から取得したシステム色に対してはそれじゃいけないような…

> しかし、現状ではとてもじゃないけどデフォルトで有効にすることはできませんね。
> もったいない。なんでSafariのように何も設定なしにできないんでしょうね。

Safari がどのような動作をするのかは知りませんが、上記のように、出力側のカラープロファイルは何らかの形で必須ですから、
「何も設定なし」というのはありえなくて、OS 側の設定を取得、それが設定されていなければとりあえず sRGB を使用、とかではないんでしょうかね。

Linux 上の Firefox の場合は、パッチを見た限りでは
・ gfx.color_management.display_profile が設定されていて、かつ読み込めればそれを使う。
・ X からカラープロファイルを取得できればそれを使う。
・ それもダメなら、内蔵の sRGB プロファイルを使う。
となっているようです。
デフォルトではまるっきりダメで、 gfx.color_management.display_profile で sRGB をすれば回避できるということは、
・ X のカラープロファイルの設定がおかしい
・ Gecko の、X からカラープロファイルを取得する部分にバグがある
の、どちらかではないでしょうか。

# という説明を、
# https://bugzilla.mozilla.org/show_bug.cgi?id=390030#c4
# あたりで書き込めればよかったのですが、背景の説明から始める気力がない…

トラックバック

トラックバックは検索対象外です。