(FreeBSD 7.3) Emacsで多言語フォント表示

FreeBSD 7.3のpackagesの
・ar-ae_fonts1_ttf-1.1_2
・gnu-unifont-ttf-20080907
・indic-ttf-fonts-0.5.6
・junicode-0.6.17
をインストールし、.emacs.elにて

(set-fontset-font (frame-parameter nil 'font)
'ethiopic
(font-spec :family "Goha\-Tibeb Zemen"))

することにより、Emacs23でM-x view-hello-fileすると
HELLO in various languages
ここまで表示されるようになった。


繁体字中国語とハングルだけがTrueTypeでない。繁体字もハングルも色々なTrueTypeフォントを入れてみたが、自動的に使われるようにはならなかった。フォントセットにて明示的にいずれかのTrueTypeフォントを指定する必要があるらしい。
面倒だし、何か表示されているので、これで良しとする。

上のethiopicに対するフォントの設定は、ある時点からなぜか、同じバッファの同じUnicodeの文字でも、場所によってTrueTypeで表示されたりビットマップフォントで表示されたりするようになって、ビットマップフォントの方が甚だしく不格好なので追加したものである。Text propertyのcharsetがethiopicになったりmule-unicode-0100-24ffになったりして、ethiopicになった文字がビットマップフォントで表示されるのが原因のようである。Elispのset-charset-priorityでethiopicとmule-unicode-0100-24ffの順序を入れ換えてみても同じだった。
適切なフォントで表示されないものもfacemenu-remove-allすると正しく表示されるので、faceが悪さをしているのかも知れないと思っている。Faceはよくわからないので、挫折した。

Emacs22については、intlfonts-1.2.1_3というパッケージを追加すれば、ほとんどのフォントが出るようである。intlfontsの説明には、

This contains free X11 fonts for all characters that Emacs and XEmacs can handle.

とあるが、これはEmacs20か21の話で、Emacs22で登場したindian-glyphというcharsetに関しては当てはまらないようである。intlfontsを導入しても、M-x describe-fontsetすると、indian-glyph以下の文字が全て四角になってしまう。Emacs21ではこの部分はmuleindian-1というcharsetであり、それだとintlfontsで全て表示できたようだ。
下の画面は、
(set-fontset-font (frame-parameter nil 'font)
(cons (indian-glyph-char 0 'devanagari) (indian-glyph-char 255 'devanagari))
"-*-*-*-*-*-*-*-*-*-*-*-*-muleindian-2")

とやって、indian-glyphの内ヒンディー語だけ無理矢理表示させたものである。
HELLO in various languages
Emacs22でKannada, Malayalam, Tamilの文字を表示する方法については、Emacs infoに何も書かれておらず、webを探し回っても全くと言っていいほど情報が見当たらなかったので、諦めた。表示されないという報告はあるものの、表示に取り組んでるページも見当たらなかった。上の画像のように、Emacs23でTrueTypeを使うと、さしたる苦労無くそれらの言語も表示されるので、もはやこのEmacs22限定のインド系フォントの問題に取り組んでる人はいないということだろうか。