フォントビットマップ化計画。

なんとなく、ギザついた生活を送ってみたくなったので、ビットマップフォントな生活にしてみました。

ascii フォントは profont というカワユイ奴で、ProFont Mac bitmap incl.というのをダウンロードしてインストールしました。別に、TTF でも大丈夫なので、Windows 用の TTF をダウンロードしてもインストールできます*1
日本語は、最初 Osaka でいこうと思っていたのですが、profont 12px に対して、2倍横幅にしようとすると、行間が広がり過ぎてしまったので、typester さんの記事を参考にモトヤシーダを使いました。
というか、typester さんのブログがいつまでも under maintainance で困っている人は多くいらっしゃる事でしょう。
Emacs 22でのフォントの設定は、Carbon版 Emacs 22.1 のフォント設定に詳しく書かれてありますが、profont を使った場合は、fixed-width-fontset パッケージが使えない(使えるかもしれないけど面倒)ので、2. default のフォントセットを変更するを参考に自分で設定しました。

というわけで、僕の設定

(when (eq system-type 'darwin)
  (when (= emacs-major-version 22)
    (setq mac-allow-anti-aliasing nil)
    (add-to-list 'default-frame-alist '(font . "fontset-default"))
    (set-face-attribute 'default nil
			:family "profont"
			:height 120)
    (set-fontset-font "fontset-default"
		      'japanese-jisx0208
		      '("nfmotoyacedar" . "iso10646-*"))
    (set-fontset-font "fontset-default"
		      'katakana-jisx0201
		      '("nfmotoyacedar" . "iso10646-*"))
    (setq face-font-rescale-alist
	  '((".*profont-medium.*" . 1.0)
  	    (".*profont-bold.*" . 1.0)
	    (".*nfmotoyacedar-bold.*" . 1.4)
	    (".*nfmotoyacedar-medium.*" . 1.4)
  	    ("-cdac$" . 1.3)))))

ascii と日本語を丁度倍にしたい場合は、face-font-rescale-alist の値を調節するのがミソです。
ちなみに、fixed-width-fontset(というか、carbon-font)を読み込むと、face-font-rescale-alist に値がセットされるので、上手くいかない場合は読み込まない方が無難。

(setcdr (assoc ".*nfmotoyacedar-medium.*" face-font-rescale-alist) 1.4)

という風にして、face-font-rescale-alist の値を C-x C-e で評価しながら幅を調節するのがミソです。


1.2 だと、ちょっと日本語の横幅が足りないですよね。この値は、フォントによって異なり、Mac標準のフォントの幅を上手く纏めた設定が、carbon-font なのです。
Carbon Emacsの(脱carbon-font)フォント設定 - ymorimoの日記の記事で、フォントセットを複数作って、切り替える方法があります。
なので、デフォルト以外にも作りたければ、

(create-fontset-from-mac-roman-font
 "-apple-profont-medium-r-normal--12-*-*-*-*-*-iso10646-1" nil "profont")

(set-fontset-font "fontset-profont"
		  'japanese-jisx0208
		  '("nfmotoyacedar" . "iso10646-*"))

(set-fontset-font "fontset-profont"
		  'katakana-jisx0201
		  '("nfmotoyacedar" . "iso10646-*"))

という感じで、フォントセットを作りましょう。create-fontset-from-mac-roman-font で作ったフォントセット名には、fontset- 不要ですが、 set-fontset-font のフォントセット名では、 fontset- が必要ですので注意しましょう。
後の詳しい説明は、3. フォントセットを予め定義するを参考にして下さい。
作ったフォントセットは、

(set-frame-font "fontset-profont")

を評価して変更できますし、M-x set-frame-font fontset-profont でも変更できます。でも、なぜか、作った fontset は補完で表示されません*2
フォントセットの一覧を表示する方法はいくつかありますが、一番簡単なのは、M-x describe-fontset でしょう。

番外: ターミナルのフォントも変更しました。


プロフォントギザカワユス。
あ、そういや、MacEmacs 23 でアンチエイリアスがオフにできなかったんですが、そういうもんなんですかねー。
ns-antialias-text*3nil にしてみたんですけど駄目でした。

*1:ただし、その場合は、フォント名が ProFontWindows になるので注意

*2:なんか不便ですね

*3:mac-allow-anti-aliasing のエイリアス