[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: 透明 favicon



青田です。解決策発見かも?

From: Katsumi Yamaoka <yamaoka@xxxxxxx>
Subject: [emacs-w3m:09837] Re: 透明 favicon
Date: Wed, 12 Dec 2007 15:51:43 +0900

> >>>>> In [emacs-w3m : No.09836] 青田さん wrote:
> 
> >> Version: ImageMagick 6.3.5 09/20/07 Q16 http://www.imagemagick.org
> >> を使って http://fedora-jp.sourceforge.jp/ の favicon を
> >> $ cat favicon.ico | convert -geometry 48x48 ico: png:- | display -
> >>
> >> で表示したものを添付しますね。背景の市松模様は、display が透過色
> >> を表示する場合の仕様です。
> 
> > むむ、うちのとはマスク位置が正反対です。
> > Version: ImageMagick 6.2.8 06/14/06 Q16 http://www.imagemagick.org
> > を使い同様に表示したものを添付します。
> 
> ええっ、これが同じ画像だなんて信じられませんね。絵づらは XEmacs
> が modeline に表示するものと良く似ています。同じ convert を使っ
> て w3m-favicon-type の値も同じ png なのに、どうしてこうも違うの
> かしらん。ちなみに Emacs が表示するものは IE6 のと似ていて、どち
> らも "F" の上の横棒が欠けています。
> [...]
> ほほう。6.3.7-3 を試してみました。これだと "F" の上の横棒が見え
> ます:

とすると、今のところ以下の3タイプなんでしょうか。

Fj型
	Firefox
	ImageMagick 6.3.7-3
|-j型
	Emacs(ImageMagick 6.3.5 libpng 1.2.22)
	IE6
	Meadow
Fjくりぬき型
	XEmacs(ImageMagick 6.3.5)
	Emacs(22.1.50.1 arm-sharp-linux-gnu ImageMagick 6.2.8・libpng 1.2.14)

Windows のエクスプローラやペイントあたりで見るとどうなるか知りたいです
ね。その表示が一応公式でしょうから。

;; でも、 IE6 は |-j なんですよねぇ…。さすがにこれが公式だとは思いたく
;; はないですが ^^;
;; Fedora Japan の中の人が間違ってるビューアで見ながら作ったからという
;; オチだったりして…。 

>> http://www.debian.org/ の favicon に対して
>
>> (insert-image
>>  (create-image "~/deb.png" 'png nil))
>> => 背景が白
>
>> (insert-image
>>  (create-image "~/deb.png" 'png nil :background "red"))
>> => 背景が黒 (= バッファの背景)
>
>> となりました。
>
> ことらではどちらも背景が黒。ほよよ。

これはどうやら、 Emacs の以下の変更によるものみたいです。 png のデフォル
トの背景が白だったんでしょう。

Emacs cvs src/ChangeLog より
,---- 
|2007-08-06  Chong Yidong  <cyd@xxxxxxxxxxxxxxxxx>
|
|        * xdisp.c (redisplay_window): When restoring original buffer
|        position, make sure it is still valid.
|
|        * image.c (png_load): Ignore png-supplied background color.
`---

>> 透過だけはされているのかな?この時は、ちゃんと透過色だけが色抜きされて
>> ます…。不思議…。これを利用して、mode-line の背景色を指定してやると透
>> 過できているように見えるかもしれませんね。
>
> やっかいなのは header line と mode line の背景色が同じではないこ
> と、さらに mode line の色は選択されているときとそうでないときで
> 変化することですね。
>
> あるいは表示する favicon の左右に 1-dot 幅の透明な縦棒をくっつけ
> て heuristic を使うとか...ううむ、降りたくなってきた。^^;;

debian の favicon が white を指定しても透過できちゃったので、これだと必
要以上に消してしまう可能性が残るのでは?

> それから、png の透過色は、こことか emacs-devel で過去に話が出て
> ましたが、まだ Emacs の普通のバッファ上ではサポートされていない
> と思うんですよ。だから上記の青田さんの例は、こうでもして実験しな
> いといけないと思います。
> [...]

試してみましたが、結果は変わらずです。 w3m-favicon.el のほうもいじって
みましたが同様です。しかも、背景が header line の背景(灰色)になりません
でした。どうも :background が指定されると、 frame の背景色で上書きする
みたいです。

それで、

$ cat deb.ico|convert -geometry 48x48 ico: png32:- > deb.png

として、pngの形式を固定してやるとうちでも :background の色が背景になる
ことがわかったのですが、ここで

(create-image "~/deb.png" 'png nil :background "")

などと、存在しない色名をいれとくと透過が残ります。とりあえず、
"none","hoge"で OK でした :-) よろしければ、追試お願いします。

;; 書いてる途中で発見したので、ごちゃごちゃしたメールになってしまいまし
;; た。ご勘弁ください ;-)