emacsでbdf

emacsで文章を書いているときによくクラッシュする。
emacsってそんなに落ちるものじゃないだろうと思って類似例が無いか検索してみた。faceの設定によっては落ち易い場合があるようだ。私はほとんどデフォルトのままで使っていて、特別に凝った(というほどでもないが)設定をしているのはフォントくらいであるため、これを見直そうと考えた。PC9801から抽出したフォントをttfに埋め込んで使っているのだが、変換の段階等で下手なことをしていないとも限らない。
まず、PC9801のフォントをttfにした手順はこうだ。

  1. mkxfnt98でロムから抽出
  2. fontx2bdfでbdfへ変換
  3. bdf2ttfでttfへ変換

このttfへ変換するプロセスを抜いてbdfのままemacsに認識させようというのが今回の主旨である。
私が使っているemacsGNU Emacs 22.1.1なのだが、ウェブ検索するとMeadow用の設定方法ばかり引掛って思ったより時間がかかってしまった。大したことのない作業だったが、結局、今日はずっとかかりきりだった。
さて、まず必要なのはmkxfnt98で抽出したjpnhn16x.98とjpnzn16x.98をfontx2bdfでbdf形式に変換したものである。適当なフォルダに入れておこう。そして.emacsに以下を追加する。それだけ。

(setq bdf-directory-list '("D:/emacs/bdf"))

(setq w32-bdf-filename-alist
      (w32-find-bdf-fonts bdf-directory-list))

(create-fontset-from-ascii-font
 "-Pc98-Fixed-Medium-R-Normal--16-*-*-*-*-*-JISX0201*-*" nil "Pc98")

(set-fontset-font "fontset-Pc98" 'japanese-jisx0208
                  '("-Pc98-Fixed-Medium-R-Normal--16-*-*-*-*-*-JISX0208.1983-0" . "jisx0208.1983"))

(set-fontset-font "fontset-Pc98" 'katakana-jisx0201
                  '("-Pc98-Fixed-Medium-R-Normal--16-*-*-*-*-*-JISX0201.1976-0" . "jisx0201.1976"))

(setq font-encoding-alist
      (append '(
                ("JISX0201" (latin-jisx0201 . 0)) 
                ("JISX0201" (katakana-jisx0201 . 1))
                ("JISX0208" (japanese-jisx0208 . 0))
                )
	      font-encoding-alist))

(setq default-frame-alist
      (append (list
		    '(font .  "fontset-Pc98"))
	      default-frame-alist))

ここでは私の環境にあわせてbdf-directory-listには"d:/emacs/bdf"を設定しているが、もちろん各自の環境にあわせてbdfを置いたフォルダ名を設定することになる。複数のフォルダを設定することも可能だ。
これでPC9801のフォントをemacsで利用可能にはなったわけだが、私の環境では入力ごとに行が細かく上下する現象がおきたのでbdfを直接エディタで開き、FONT_DESCENTとFONT_ASCENTをいじる必要があった。
当初の目的である安定化が図れるのかどうかは未知数であるが、しばらく様子をみようと思う。
f:id:SaitoAtsushi:20071029004410p:image
Document ID: 73762a22ca4ad3bd9140a3ab756a0053