This site is a mirror of ama.ne.jp.

X-Face compatibleなアイコンを目指して

WORDIAN Advent Calendar 2017

こんにちは。12月12日です。

X-Face(えっくすふぇいす)って何?

Not to be confused with Xfce.
X-Face

電子メールやネットニュースを使っていますか? X-FaceはメールやネットニュースにX-Face:ヘッダとして付加されています。モダンな電子メールクライアントやニュースリーダでは、メッセージを開いた際にこのヘッダを解釈して48x48ピクセルの2値画像を表示します。

モダンなソフトウェアというのは、SylpheedKmail、またはMewなどのモダンなソフトウェアです(下画像はSylpheed)。Thunderbirdは対応するプラグインが消えてしまっており2、もはやモダンな電子メールクライアントではないようです。

SylpheedでX-Faceアイコンが表示されている様子

なお、さらに新しい規格として、base64エンコードされたPNG画像を付加するFace:ヘッダも存在します3。サイズはX-Face同様48x48に固定されてしまいますが、X-Faceとは違ってカラー画像を用いることができます。こちらもThunderbirdにはまともなプラグインが残っていません。

また、複数のX-Face:ヘッダを用いてカラー画像、48x48より大きな画像、アニメーションなどを表現する規格も存在しますが、モダンすぎてほとんどサポートされていません。nao.bird.to: Software Archive1には動作するPerlスクリプトがあるようです。

X-Face compatibleなアイコンを作る

モダンでクールなX-Faceに対応するためには、48x48の2値画像を作る必要があります。2値ビットマップを表現するにはXBM画像が便利です。

アイコンを持っていない場合

簡単です。bitmap -size 48x48でドットを打ちましょう。

ビットマップエディタで「あまね」と打っている様子

出来上がったamane.xbmはこんな感じになります。

#define amane_width 48
#define amane_height 48
static unsigned char amane_bits[] = {
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x98, 0x11, 0x00, 0x00, 0x00, 0x00,
   0xf0, 0x1f, 0x04, 0x00, 0x00, 0x00, 0x80, 0x00, 0x04, 0x20, 0x00, 0x00,
   0xc0, 0x80, 0x1f, 0x20, 0x00, 0x00, 0x40, 0x00, 0x04, 0x78, 0x00, 0x00,
   0xf0, 0x00, 0x04, 0x30, 0x0c, 0x00, 0xcc, 0x85, 0x1f, 0xd8, 0x1b, 0x00,
   0x44, 0x03, 0x04, 0x3c, 0x30, 0x00, 0xc4, 0x03, 0x04, 0x1e, 0x20, 0x00,
   0x7c, 0x02, 0x04, 0x13, 0x3e, 0x00, 0x40, 0x02, 0x0f, 0x10, 0x7a, 0x00,
   0x40, 0xc0, 0x3c, 0x10, 0x4e, 0x00, 0x40, 0x40, 0xc4, 0x10, 0x00, 0x00,
   0x00, 0x80, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   /* snip */
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

アイコンを持っている場合

より簡単です。How to make X-Faceスナフキンのできるまでなどを参考に、X-Face compatible加工について学びましょう。元画像にもよりますが、手で打たなければならないドットの量は少なくなると思います。

  1. 加工前の画像:
    水色の背景に「見たい!知りたい!原子力」という白抜きの文字
  2. グレースケールにした上で、48x48に縮小:
    上記の画像を48x48ピクセルに縮小し、グレースケールにしたもの
  3. いい感じにドットを打つ:
    上記の画像を白黒2値にしたもの

なお、Online X-Face Converterを用いれば、手での調整が効かない代わりに自動で48x48の2値画像に変換できます。さらに、変換した画像のX-Face表現も取得できるのでとても便利ですね。

X-Face compatibleなアイコンを使う

出来上がったアイコンを自分で眺めて楽しむのもいいですが、ぜひ色々なところで使ってみましょう。

X-Face:ヘッダとして使う

簡単です。先述したOnline X-Face ConverterでX-Face形式に変換できます。もしサーバにアイコンをアップロードするのが不安なら、Compfaceに同梱されているxbm2xface.plを用いてX-Face表現に変換できます。

「見たい!知りたい!原子力」の48x48ピクセル白黒2値画像

X-Face: DE6CX2~b!6.CnZ15hL{G^c1rE}n2cHH6eKU'!cO$^0A&9I*I~1e&`NV3gb%ypxhVEP.I3Q*
 S**R0WR/IC<flQrWkTfeb'HoIfT/'6z08VC-T':;z%Sa,i;{YR,YQ`Lksj&`9?7&%EeXeL6v\2][YX
 h#{XN5@~|7?dKl8j_dv84S,d9^T\m>vSRyaxAwp&wYFqfRUHsC?U?Dak4"X@k$mq:/6ko4G

お使いのモダンな電子メールクライアントやニュースリーダにX-Face:ヘッダを設定しましょう。送信時にX-Face:ヘッダが付加されているのが確認できると思います。

画像として使う

より簡単です。お気に入りの画像編集ソフトウェアで適当なサイズに拡大しましょう。ピクセルがボケてしまうので補間機能を用いてはいけません。GIMPを使うか、ImageMagickでconvert -scale 480x icon.xbm icon.pngなどとするのがおすすめです。変換後のサイズは48の倍数にすると良いでしょう。

「見たい!知りたい!原子力」の48x48ピクセル白黒2値画像を240x240ピクセルに拡大したもの

おわりに

X-Face compatibleでモダンなアイコンをTwitterやASKfmやSarahahやPeingなどに設定すると、解像度が高くてカラフルなアイコンを使っている友達に一歩差をつけることができるといいですね。

「読んだ」を押すと、あなたがボタンを押した事実を明示的に通知してこのページに戻ります。このページに戻ってからブラウザの「戻る」ボタンを押すと、何度か同じページが表示されることがあります。