輝き ~ 脱・三日坊主計画

要約だよ人生は

Emacsのフォントをいじった

www.ubuntu.com

私の研究環境はUbuntuを中心に構成されている。10月20日にはUbuntu 17.10がリリースされていて、研究環境もそれに伴って17.04から17.10に移行しつつある。現在も何か使用できないアプリケーションが存在しないか実際に使用することで問題をあぶり出しているのだが、早速Emacsに、バージョンアップしたことによる影響を発見した。

バージョンアップ以前、Emacs上では表示フォントにRictyを使用していた。しかしながら、バージョンアップに伴ってRictyが消えてしまったか、もしくはRictyのフォントの元になっているInconsolataがInconsolataGoに変化したことに伴ってか、Rictyが使用できなくなってしまっていた。おそらくはフォントを入れ直せば良いのだが、ちょうど良い時期であったので一度Emacsの初期ファイルinit.elのフォント関連に関して少しいじってみようと考えた。Emacsは全体のフォントはもちろんのこと、文字一つ一つに対して別々にフォントを設定できるというニッチな需要にも応えている。

検証環境

  • Ubuntu(Lubuntu) 17.10
  • Emacs 25.2.2
  • Emacsの初期化ファイルの位置は、~/.emacs.d/init.elに存在*1

なにをやるのか

ここでは、半角英数のようなASCII文字に13ptのInconsolataGoを、日本語フォントに10ptのMigu 1Mを使用する例を示す。本来はあまりASCIIと日本語でフォントを分けるべきではないのだが、ここではEmacsのカスタマイズ性を垣間見るという意味で使用してみよう。

通常使用しているデフォルトフレームに設定したいのなら、次のように設定できる。

(set-face-attribute 'default nil :family "InconsolataGo" :height 130)
(set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0213.2004-1 "Migu1M-10:weight=normal")
(add-to-list 'default-frame-alist '(font . "fontset-default"))

見ての通りASCIIと日本語で設定方法がだいぶ違っていてかなり汚いのだが、とりあえずはこれで望みどおりに動作した。これに行き着くまで5時間かかってしまった。もちろん、フォントの名称部分を変えれば、他のフォントに変えても動作してくれるはずだ。構文に関しては美しい表記が分かり次第修正する予定である。意外にこの構文の解説が少ないため、解説も今後の記事でも行っていければと考えている。

*1:https://qiita.com/tadsan/items/a2018379ffaadf07a418も併せて参照してほしい