パスワードを忘れた? アカウント作成
12608979 journal
日記

okkyの日記: Cygwin Emacs の日本語設定 4

日記 by okky

Windows10をクリーンインストールしなおしたら、面倒なことが1つ発生した。
「Emacsをどうするか」問題。

私は cygwin 自体は「いいから全部入れろ」状態にして使っている。「なるべくWindows nativeに近い環境で」とかそういうことはコマンドライン系に関してはまったく気にしないことにしているので。なので、Cygwinは全部入れているし、こいつに食われるディスク・メモリに関しては気にしない、という主義なのだが、それでもEmacsは困っていた。

Meadow, NTEmacs と使ってきたが、どちらも開発がいつかどこかで止まる。
その点、Cygwin Emacsは本家のEmacsをそのまま持ってきているだけなので、常に最新の Emacs に追従してくれるという利点がある。

利点ではあるのだが、こいつはこいつで問題が2点。
1) 日本語入力をどうするか?
2) 日本語フォントをどうするか?

なお、環境だが:

$ uname -a
CYGWIN_NT-10.0 DESKTOP-3P8KUJ4 2.3.1(0.291/5/3) 2015-11-14 12:44 x86_64 Cygwin

Emacs version
GNU Emacs 24.5.1 (x86_64-unknown-cygwin, GTK+ Version 3.14.13) of 2015-06-23 on desktop-new

1) 日本語入力をどうするか
日本語入力問題は、簡単に言うと「Emacsからは MS-IMEがうまく叩けない」という問題。canna2imm32 ぐらいしか解決策がない。
https://github.com/nu774/canna2imm32
が、これも開発が止まっているというか、必要ない状態になって久しいようだし、そもそも Cygwin 標準ではない。

というわけでどうしようかと悩んでいたのだが、Cygwin にはなんと「anthy が移植されている」事が判った。MS-IMEを諦めればあっさりと問題は解決する。

なんだー、という訳で、解決策はanthy を使うに決定。辞書が共有されないとか問題はあるが、標準環境そのまんまでインストールの手間暇もいらないので、まぁ気にしない方向で。

Step 1) 一度 X11 Server を立ち上げ ibus を設定する。

$ ibus-setup
GUIウィンドウが開くので、日本語入力を ibus-anthy に設定する。
(他の部分も変えてもよいが、Emacs相手ではあまり意味がない)

Step 2) .bashrc に以下の行を追加する。

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

ibus-daemon -drx

Step 3) .emacs.el に以下の一行を追加

(setq default-input-method "japanese-anthy")

Step 4) X11 Server を一度止める。で、再度起動しなおす。
X11を動かしてから Emacs を起動。
Ctrl-\ で 日本語入力が on/off することを確認する。

2) 日本語フォントをどうするか?
こちらはまだ解決しきっていない。

とりあえず日本語でもどうにかする、という程度ならば .emacs.el

;;(set-face-attribute 'default nil :height 160)
(set-face-attribute 'default nil :family "DejaVu Sans Mono")

で、表示はできる。Mono あるいは monospace とついているフォントセットなら、どれも固定ピッチになるらしい。

(set-face-attribute 'default nil :height 160)

という設定で、文字の高さを 16p にできる。ほんまか?という気もするが、若干大きいぐらいが丁度よいので(老眼)、ま、こんな感じで。ここは適当に
(:height の単位は 1/10 pt だそうな。

固定ピッチになるのだが、"DejaVu Sans Mono" だと横幅が 半角:全角 = 1:2 にならない。で、エディタの場合、 半角:全角 = 1:2 でないと使いづらい。

かといって、Emacsのあの fontset 指定は面倒くさいうえに、どのフォントがどこに入っている、周りは環境依存性が高いのでなぁ…どうしたもんだかなぁ…と思案中。

[2015/12/27 追記]
あれ?一度書いたのに消えた…

悩んでもしょうがないので、とりあえず Windows のTrueType フォントを Xに教えるべく七転八倒した。

Windows のフォントは /cygdrive/c/Windows/Fonts/ の下にある。*.ttf というファイルと *.ttc というファイルがそれだ。他に *.fon という拡張子のファイルもあるのだが、これが何だかよく判っていないのは内緒だ。

で、これを /usr/share/X11/fonts/ の下にコピー…してもよいのだが、それだとディスクがもったいないので。シンボリックリンクで済ませよう。他のフォントと混ざると困る危険性があるので、別ディレクトリ掘って…

# mkdir /usr/share/X11/fonts/Windows
# ln -s /cygdrive/c/Windows/Fonts/*.ttf /usr/share/X11/fonts/Windows/
# ln -s /cygdrive/c/Windows/Fonts/*.ttc /usr/share/X11/fonts/Windows/
# mkfontscale /usr/share/X11/fonts/Windows
# mkfontdir /usr/share/X11/fonts/Windows

と、こうすることにした。

ちなみに /usr/share/fonts/ というディレクトリもあって、ここの下にも似たようなディレクトリ構造があり、fonts.dir とか fonts.scale とかのファイルもあるが、こちらにシンボリックリンクを張っても X では使えなかった。どうやらトラップのようだ(違う)。

で、こうしたら…あら不思議。Emacsが標準で使うフォントも綺麗になった。
よかったよかった。というわけでしばらくこれで行くことにした。

----

というわけで、Windows で Emacs を使おうとしたときに初心者がドツボばまりする3ポイント:

1) Emacs 自身のインストール
2) Emacs 上で日本語入力をどうするか
3) Emacs の日本語フォントを少しましにするにはどうするか

の解決策は以上の通り。

A1) cygwin 全部入れろ
A2) anthy にしてしまえ
A3) Windows のフォントを全部 X に教えてやれ

で済むことが分かりましたとさ。

この議論は、okky (2487)によって ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...