電子メイルや電子ニュースの記事で、身元識別など(謎) の目的で頭領域につける画像。
元々は48×48点の白黒画像1つを compface というプログラムで ASCII printable character にしたものでしたが、 現在では多色, 他の大きさ, 動画などを扱えるように拡張されています。
多階調 X-Face と depth について:
2 から 8 の間の数字です。これがそのまま X-Face ヘッダーの
数になるのですが、まあ 3 か多くても 4 で何とか絵になると思います。
普通の X-Face は各画素を 0 か 1 の二値で表現した 2304 ビットのデー
タを、compface で非破壊圧縮して作っているのはご存知の通りです。
では多階調 X-Face はどうやっているかというと、例えば X-Face ヘッ
ダーが 3個ある場合は一つの画素を 3 ビットで表現し、000 から 111
までの 8 段階の明るさを表現できるようにしています。各画素の 3 ビッ
トのうち最上位ビットだけを集めて作ったのが X-Face:、真ん中のビッ
トだけを集めて作ったのが X-Face-1:、最下位ビットだけを集めて作っ
たのが X-Face-2: という具合になっています。
<http://www.jpl.org/elips/> から入手できる x-face package の METHOD.ja より引用
マルチ X-Face とは、サイズが 48x48 の普通の X-Face を複数個組み合わ せて一枚の絵にするもので、カラー X-Face もその一種です。
さて、互いに無関係な複数の、それぞれのサイズが 48x48 の絵をエンコー ドしてヘッダに挿入した場合、それらをデコードして表示する場合の順序や 配置はさほど問題になりません。しかし、もっと大きな絵を複数の X-Face に分割したりカラーの絵を2値の三原色に分解して伝送する場合には、それ ぞれをデコードした後でつなぎあわせたり合成するときの順序や配置に関す る情報を一緒に伝送する必要があります。そのため
X-Face-Type:
というフィールドを創設しました。この右側には ";" で区切って ascii 文 字で複数の情報を並べることができ、並べる順序の決まりや大文字/小文字 の区別はありません。現在以下の二つが予約されています。
geometry=MxN M と N はそれぞれ M=横幅÷48, N=高さ÷48 で求められる自然数で、こ れによって表示するときのサイズを表します。
RGB 2値の三原色に分解したカラー X-Face であることを示します。当然なが ら3の自然数倍の個数の X-Face フィールドがヘッダに含まれていなけれ ばなりません。これには必ず geometry の指定が伴っている必要があり、 カラーイメージとして表示するときのサイズを表します。
;;; 他にプログラムの開発段階を表す status という要素を一時使ったこと ;;; がありますが、これはあえて予約語にはしないことにします。
互いに無関係な複数または単一の X-Face フィールドをヘッダに挿入すると きは X-Face-Type フィールドを付ける必要はありません。これが必要なの は 48x48 より大きいものやカラー X-Face を伝送する場合で、必ず X-Face フィールドより前に挿入します。続く複数の X-Face フィールドは、以下の ような順序で並べます。これらの組合せ (例えば 2x1 のカラーと 1x3 のモ ノクロ X-Face、都合 9個の X-Face フィールドをヘッダに挿入する) も可 です。
X-Face-Type: geometry=3x1 X-Face: (1) +---+---+---+ X-Face: (2) | 1 | 2 | 3 | X-Face: (3) +---+---+---+
+---+ X-Face-Type: geometry=1x3 | 1 | X-Face: (1) +---+ X-Face: (2) | 2 | X-Face: (3) +---+ | 3 | +---+
X-Face-Type: geometry=3x2 X-Face: (1) +---+---+---+ X-Face: (2) | 1 | 2 | 3 | X-Face: (3) +---+---+---+ X-Face: (4) | 4 | 5 | 6 | X-Face: (5) +---+---+---+ X-Face: (6)
X-Face-Type: RGB; geometry=1x1 +---+ X-Face: (1 Red) | 1 | X-Face: (1 Green) +---+ X-Face: (1 Blue)
X-Face-Type: RGB; geometry=2x1 X-Face: (1 Red) X-Face: (2 Red) +---+---+ X-Face: (1 Green) | 1 | 2 | X-Face: (2 Green) +---+---+ X-Face: (1 Blue) X-Face: (2 Blue)
X-Face-Type: RGB; geometry=1x2 X-Face: (1 Red) +---+ X-Face: (2 Red) | 1 | X-Face: (1 Green) +---+ X-Face: (2 Green) | 2 | X-Face: (1 Blue) +---+ X-Face: (2 Blue)
X-Face-Type: RGB; geometry=2x2 X-Face: (1 Red) X-Face: (2 Red) X-Face: (3 Red) +---+---+ X-Face: (4 Red) | 1 | 2 | X-Face: (1 Green) +---+---+ X-Face: (2 Green) | 3 | 4 | X-Face: (3 Green) +---+---+ X-Face: (4 Green) X-Face: (1 Blue) X-Face: (2 Blue) X-Face: (3 Blue) X-Face: (4 Blue)
これらの並びの順序は重要で、途中に別のフィールドが紛れ込むのは構いま せんが、 X-Face や X-Face-Type の順序が変わってしまうと元の絵を再現 することができません。現在までのところ順序を入れ替えてしまう MUA/MTA に遭遇したことはありませんが、フィールドの並び順 (特に X- で始まるも の) に関する決まりは無いので、不幸にして壊れてしまったら諦めるしかあ りません。(;_;)
(引用ここまで)
X-Face を出力したソフトウェアなどについての情報を入れる 非構造化頭領域。