XBM

XBM（X BitMap）は、X Window SystemのGUIにおいてカーソルやアイコンに使用するビットマップ画像を格納するための、プレーンテキストによる二値画像ファイルフォーマットである。1989年に登場したX11以降、XBMはXPMに置き換えられた。

データ形式 
他の画像ファイルに対するXBMファイルの明確な特徴として、C言語のソースコードの文法を流用している点が挙げられる。これによって、前処理を経ずに直接アプリケーションに埋め込んでコンパイルすることが可能であるが、一方で元のピクセルデータよりもファイルの大きさは著しく増大する。1バイトの画像情報を表現するのに複数のASCII文字が使われるために、画像データは'0x13'のようにC言語の16進記数法で記述されたバイト値を、コンマで区切ったリストとして符号化される。

XBMのデータは、白黒のピクセルデータを持つ一連のstatic unsigned char型の配列で構成される。このフォーマットが広く使われていた時期には、ひとつのヘッダ（.hファイル）ごとに単一の配列として画像を格納する形が一般的にみられた。以下はXBMをCソースコード内に記述した例である。

#define test_width 16
#define test_height 7
static unsigned char test_bits[] = {
0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
0x00, 0x60 };

通常の画像フォーマットのヘッダの代わりに、XBMでは2つないしは4つの#define指示文が置かれる。先頭の2つの#defineでは画像の縦と横のピクセル数が指定される。残りの2つでは（もしあるとすれば）ビットマップ内の「ホットスポット」（カーソルを指したときに反応する位置、一般的には0,0）の位置が指定される。

XBMの画像データは、静的配列に格納された1行のピクセル値で構成される。1ビットがそれぞれのピクセル（0が白で1が黒）に対応するため、配列内では1バイトあたり8ピクセルの情報を持ち、画像内の左上端のピクセルは配列内の最初の1バイトの低位ビットで表される。画像の幅が8の倍数でない場合には、それぞれの行の最後の1バイト内の余分なビットは読み飛ばされる。

サポート 
World Wide Webの黎明期において、XBMがプロプライエタリではない最小の画像フォーマットだった名残りとして、いくつかのウェブブラウザではXBM画像の表示がサポートされている。ではバージョン0.3.34（1997年7月リリース）から完全にサポートされている。Internet Explorer 6やMozilla Firefox 3.6、それにWebKitベースのウェブブラウザではXBMサポートは削除されている。Chromiumでは（Google Chromeもまた同様に）XBMがサポートされていない可能性が非常に高い。Operaのバージョン2.12および6.0のドキュメントによれば、少なくともXBMが以前にはサポートされていたと示唆されている。

XnViewやFFmpeg、IrfanViewなど、いくつかの画像ビューアや変換ソフトウェアではXBMがサポートされている。48x48ピクセルのXBMは、NetpbmによってIkonやX-Faceに変換できる。

XPMに置き換えられたにもかかわらず、現代的であっても軽量なウィンドウマネージャでは未だにXBMが活用されており、Openboxではウィンドウのタイトルバー上に表示される、アイコン化・最小化・復帰・最大化などの簡素なボタンの画像に使われている。さらに、組み込みコンピュータ（マイクロコントローラ）のGUIでアイコンを表示するためにもXBMが使われている。ImageMagickではXBMの他フォーマットからの、または他フォーマットへの変換がサポートされている。GIMPはXBMを作成・加工するために利用でき、他フォーマットからの、または他フォーマットへの変換もサポートされている。

脚注

関連項目 
 Xlib

X Window System
画像ファイルフォーマット