ng-1.5beta1をUTF-8対応させてみた。 [ソフトウェア]
ここ10年以上OpenBSDを使っていたが、最近都合でFedoraCore 6も使い始めた。
OpenBSDでは漢字コードは仕事の都合もあってSJISメインで、日本語ファイル名はcapで適当なフィルタやらなんやらを作っていろいろ処理していた。
ちょっとした設定ファイルの編集などにkemacsを使っていたのだが、FedoraCore 6ではいろいろとUTF-8になっているようなのでいいまいちうまくない。
viでもいいんだが、emacs使いとしてはやっぱり軽量エディタもemacs系にしたい。
しょうがないので、ng-1.5beta1のファイルI/Oと入力と表示をUTF-8対応させてみた。
Ng サポートページから、ng-1.5beta1.tar.gz を拾ってきて、適当に展開したディレクトリで gunzip <ng-1.5beta1-utf8.patch.gz | patch -p1 して、./configure して make すれば動くと思う。
とりあえず、FedoraCore 6 x86-64と、OpenBSD3.5 i386ではコンパイルできて動いている。
kinit.h を見ればわかるが、デフォルトはすべてUTF-8になっている。
ファイル読み込み時の漢字コード判別は、EUCよりUTF-8優先になっている。
(>=0xc0 が先に現れた場合はUTF-8とみなしている)
そのため、コマンドラインオプションでglobal_kexpectを指定できるようにした。
-S (SJIS), -J (JIS), -E (EUC), -W (UTF-8)
EUCでファイルを読みたい場合、ng -E <file> とすればよい。
JIS→UCS-2, UCS-2→JISの変換テーブルが大きいのでバイナリのサイズが倍以上になるが、まあ、いまどきのPCなら問題ないだろう。
Ng サポートページにも送っておいたが、久しく更新されていないようなので、だれか必要としている人がいるかもしれないと思いここに公開しておく。
ついでにemacsで使うためにMSゴシックとMS明朝から10~22ピクセルのビットマップをBDFにした。
sbitRW.exeが使えるかと思ったら、なんだか「~」が抜けてしまっていたし、13区のNEC特殊文字やIBM拡張文字もなかったみたいなので、自前のツールを拡張して組み合わせてBDF化した。
このためのツールはちょっと公開できないか……