Emacsでフォントを柔軟に設定できるbuffer-face-modeを試してみた


Emacsにとってフォント設定は、鬼門のひとつとして有名です。にも関わらず、いろいろとフォント周りをいじらずにはいれない僕は相当のマゾだと思います。

まず、僕はプローショナルフォントが好きなのですが、さすがにコーディングする時は等幅フォントを使いたいと思ってます。まあ、世の中にはコーディングにもプロポーショナルフォントを使った方が良いと言う話もあるようですが。。。

プログラミングはプロポーショナルフォントの方が読みやすい ? – スラッシュドット・ジャパン

それと@kiwanamiさんが作られたcalfw.el、すごく便利で愛用させてもらってるのですが、等幅フォントしかも日本語フォントとasciiフォントが2:1でないと表示が崩れてしまうため、導入には恐らくほとんどの人がフォント設定の鬼門をくぐらねばなりません。

と、あーいろいろと面倒くさいなーとか思ってたらEmacs23.1からbuffer-face-modeというものが追加されていることを知りました。

news-jp

いろいろ調べてみると、便利そうだとういうことはわかってきたのですが、日本語情報がほとんどひっかからなかったので、自分用のメモを兼ねてまとめておくことにしました。

buffer-face-modeとは

一言で言えば、bufferのfaceをリマップできるマイナーモードです。これまでもbufferごとにfaceの設定をすることが可能だった(らしい)のですが、buffer-face-modeを使うことで、お手軽にbufferやmodeごとのフォントを設定することができます。

buffer-face-modeのユーティリティとして、buffer-face-setが定義されています。引数にface-remapping-alistにあるface名をとることで、そのface名で登録されているface属性で現在のバッファをリマップすることができます。例えば、次のように書くことができます。

(buffer-face-set 'variable-pitch)

font-face-attributesを使えば、アドホックに書くこともできます。

(buffer-face-set (font-face-attributes "M+1VM+IPAG circle-12"))

いやはや、簡単ですね!!

設定例

最後に僕が実際にやっている設定を晒しておきます。 これでEmacsのフォント設定もかなり楽になりますね!!