9月 162009
 

Emacs-23.1 が出ました。実は結構前にインストールしていて ~/.emacs を書いている最中だったのだけど、フォントの設定でつまづいていてホーリ投げていた部分もあるのですが、その問題が解消されたのでこうして書いてみることにしました;-)。

僕は MacOSX 使いでもあるのですが、普段は FreeBSD で KDE を使っています。KDE3,4 を利用しているとアンチエイリアスの効いていないアプリケーションと言うのは emacs-22.3 のみだったので、 emacs-23.1 が出ると利用している全てのアプリケーションがアンチエイリアス対応になる。それはそれは楽しみにしていたのでした。

が・・。インストールしていきなりフォントの設定でつまづいて・・。全角日本語文字と半角英数字が同じ比率で表示してくれない。等幅フォントを利用しても全角と半角ではズレが生じてしまうのでどうしようも無い状態なのでありました。

ただ、12 ポイントのフォントサイズにするとズレは無くなるんだけど 12 ポイントと言うのはむちゃくちゃでかく感じるので 10 ポイントで利用したいのだけど、 10 ポイントにするとズレが生じる・・。トホホ。

で、今回ようやっと設定ができたのでありました。こんな感じ。goolge とかで探すとフツーにある設定です。


(eval-and-compile
    (cond
        ((< emacs-major-version 23)  ; emacs-22
            (cond (window-system
--- emacs-22 のフォント設定 (略) ---
        )
        ((= emacs-major-version 23)  ; emacs-23
        (cond (window-system
;; 標準フォント
;           (set-default-font "MS ゴシック-10")
;           (set-default-font "美杉ゴシックL-10")
            (set-default-font "さざなみゴシック-10")
(set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("MS ゴシック" . "unicode-bmp") ) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 '("MS ゴシック" . "unicode-bmp") )
(setq face-font-rescale-alist '((".*メイリオ.*" . 0.9) (".*MS ゴシック.*" . 1.1) (".*さざなみゴシック.*" . 1.0) (".*美杉ゴシックL.*" . 1.0) ("-cdac$" . 1.3))) )) ) ))

 
僕はアンチエイリアスなフォントを使いたいので MS ゴシックを全角のフォントとして、半角のフォントとしてさざなみゴシックを利用します。どっちも 10 ポイントで。10 ポイントで利用した場合、全角と半角フォントにズレが発生するので face-font-rescale-alist で横幅を調節します。

・全角フォントのMS ゴシックは横幅比率を 1.1 にする。
・半角フォントのさざなみゴシックは横幅比率を 1.0 にする。

こうすることによりフォントがきっちりと揃うのでありました。

が、この設定と言うのはずっと前から入れているのにどうしてちゃんと動かないのだ?おかしく思って ~/.emacs を一行づつチェックしましたよー。そしたら問題を発見しました・・。orz。

emacs-23.1 と言うのは以下の lisp は正しく評価してくれないんですね。

(eval-and-compile
    (cond
        ((< emacs-major-version 23)  ; emacs-22
             (if (eq window-system 'x)
        )
    )
        ((= emacs-major-version 23)  ; emacs-23
            (if (eq window-system 'x)
        )
    )
)

 
(if (eq window-system 'x) がダメみたいです。emacs-23.1 を利用する場合、window-system をチェックする時は以下のように書かないとダメみたいです。

(eval-and-compile
    (cond
        ((< emacs-major-version 23)  ; emacs-22
            (if (eq window-system 'x)
        )
    )
    ((= emacs-major-version 23)  ; emacs-23
        (cond (window-system))
    )
)

 
(cond (window-system を利用するみたいです。

今回の僕のフォントの設定自体は正しかったみたいなのですが、その前に window-system をチェックする lisp が書かれていて、それが問題となってフォントの設定部分が正しく評価されなかったみたいです。"(" や ")" の数はちゃんと合っていたんですけどねぇ・・。

 
と、言うことでこれにてフォントの設定は完了です。が、この後、日本語入力が控えています。emacs-22 の頃は emcws のバッチがあったのですが、いよいよ 23 では無くなってしまいました。

僕は Canna のカナ入力の人なのですが、 scim-bridge とかで日本語入力ができたとしても emacs の制御キーが SCIM に食われてしまうのでお話になりません。やはりネーテブなインプットメソッドが欲しい所です。これからこれについて調査を行う感じになりそうです。

scim-canna を捨てて uim-canna にして、uim.el にすれば良いのかなぁ?とも思っていますが・・。

あ。yc.el を試して作者さんとちょっとメールでやり取りしたのですが、CannaServer との通信が EUC で emacs-23 が UTF-8 を利用しているため、変換後に表示される漢字が文字化けしてしまい実際に利用することができませんでした。どこかでコード変換して上げる必要があるのですが、僕は lisp がイマイチ解らないので・・。

と、言うことでフォントの設定はここまで。次回書くとしたら日本語入力についてになるかと思います;-)。

 
以下余談ですが、最近 WINE 経由で ATOK2009 を利用できるかな?とか思って格闘している最中なんですよ;-)。

これは KDE4 のメニューエディタのキャプチャ。メニューに ATOK9 が現れます。ただ、インストールが成功してないので動かないんですけどね;-)。

kdeandatok.png

後、ports/textproc/wime(http://www.venus.sannet.ne.jp/thomas/wime/) なんて ports を作っている最中ですが、これがまた手ごわい・・。

と、言うことでこの件についてはまだまだ続くことでしょう;-)。