Emacs23でバックスラッシュとチルダが表示できない問題を回避した

X11上のemacsでチルダが表示されない。 - deruiの日記

俺もEmacs23でバックスラッシュとチルダが表示できない現象に遭遇した。*1他のフォントならば、どちらも表示できるのだが。

とりあえず、似ている文字を代用することで逃げの手を打つことにした。standard-display-tableを使うと、実際の文字に対して表示上の文字を変更することができる。
バックスラッシュは元々¥で表示されていたので、\に。チルダはオーバーラインで表示させた。以下のコードを.emacs.elに加えよう。

(setq standard-display-table (or standard-display-table (make-display-table)))
(aset standard-display-table ?\\ [?\x18])
(aset standard-display-table ?~  [?\x7f])

なお、半角ぱうフォントの形状をテキスト化したものを見れば、別の文字で代用することもできる。文字はSTARTCHARで16進数表記されている。この設定では以下の字形で代用している。

変更前

STARTCHAR 005c
ENCODING 92
SWIDTH 576 0
DWIDTH 8 0
BBX 8 16 0 -2
BITMAP
................
.........11..11.
.........11..11.
..........1111..
..........1111..
...........11...
...........11...
.........111111.
.........111111.
...........11...
.........111111.
.........111111.
...........11...
...........11...
...........11...
................
ENDCHAR
(略)
STARTCHAR 007e
ENCODING 126
SWIDTH 576 0
DWIDTH 8 0
BBX 8 16 0 -2
BITMAP
..........111.11
.........1111111
.........11.111.
................
................
................
................
................
................
................
................
................
................
................
................
................
ENDCHAR

変更後

STARTCHAR 0018
ENCODING 24
SWIDTH 576 0
DWIDTH 8 0
BBX 8 16 0 -2
BITMAP
................
................
........11......
........11......
.........11.....
.........11.....
..........11....
..........11....
...........11...
...........11...
............11..
............11..
.............11.
.............11.
................
................
ENDCHAR
(略)
STARTCHAR 007f
ENCODING 127
SWIDTH 576 0
DWIDTH 8 0
BBX 8 16 0 -2
BITMAP
................
.........1111111
.........1111111
................
................
................
................
................
................
................
................
................
................
................
................
................
ENDCHAR

*1:しかも、ぱうフォント愛好者が俺以外にもいることに驚いた。