Emacsで使える色々なX Windowのフォントを、実際にEmacsで表示したらどうなるかを一覧形式で見てみたくなって、自動的にフォントを切り替えながらウィンドウイメージを画像ファイルに保存するEmacs Lispのコードを作った。
・コード(elisp)
・結果の抜粋
"tt-数字"の先はTrueType(要xft、Emacs23で表示したもの)
"tt-noaa"とあるのはTrueTypeの中のアンチエイリアスされないフォント(xft不要、Emacs22で表示したもの)
それ以外はビットマップフォント
上記コードを実行して、
本日は晴天で酷暑あるいは氷雪でブリザードなり。のようなバッファを表示した状態でM-x captureなどとして実行すると、次々にフォントが切り替わって画像ファイルに保存されていく。ウィンドウイメージのキャプチャーにはImageMagickのimportコマンドを使用している。
キャプチャー画像からサンプル文字列だけを抜き出すのは、同じくImageMagickのconvertコマンドを使って、シェルスクリプトで一括変換した。
例:
foreach i (*.tif)Trim(autocrop)できる範囲を切り出せるように、文字列部分の上下左右にたっぷりと余白を取っておくのがコツである。
convert -crop 700x80+60+30 $i -trim `basename $i .tif`.png
end
キャプチャー画像を.tifで保存しているのは、convertで-trimする時に画像圧縮によるノイズに邪魔されないようにするためである。もう少しがんばって、elispで文字列の表示位置を特定してそこだけキャプチャーするようにできればかなりいい感じなのだが、そこまでするためのelispの関数を調べ切れなかった。(というか、なんとなく不可能な気がする。文字列部分を特定して切り出すImageMagickのコマンドをelispに埋め込む方が有望かも)
これをやる前に、GIMPで全てのフォントでテキストを表示するScript-Fuを作ったのだが、これだと、Xftのフォントは表示されるが、Emacsでは使えるビットマップフォント(例えば東雲フォント)が表示されないことに気付いた。
・コード(Script-Fu)
・実行例(一部分)
上記コードをGIMPのscriptsディレクトリに保存して、GIMPで"Filters"→"font-catalogue"→"Create font catalogue"を実行すると、フォントサイズと文字列を指定するダイアログが表示され、OKすると、全フォントで文字列を表示した長大な画像が作成される(保存はされない)。一応、WindowsやMacのGIMP 2.6でも動作することを確認した。
コメント