=============================================== 1999.9.14 発行 =========
極私的 Emacs カスタマイズ紹介マガヂン
Emacs をわたし色に染めて♪
------------------------------------------------------------------------
第 12 回 フォント設定とマルチリンガル、プラスアルファ
------------------------------------------------------------------------
※あなたのカスタマイズをぜひ教えてください。一般的なものから、他の人は
絶対にしないような「外道」なものまで、何でも結構です。
※解除の方法は、このメールの末尾をごらんください。
========================================================================
こんにちは。でるもんた・いいじまです。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆今回のお題☆
今回は、「フォントの設定」です。そもそものきっかけは韓国語を
読みやすく表示する方法だったのですが、それに加えて若干のテク
ニックもご紹介します。
なお、今回の内容の前半、フォント設定の部分は、Mule 2.x(Emacs
19.x)専用になり、Emacs 20.x では使えません。Emacs 20.x 用の
方法は、機会があったらそのときに改めてご紹介したいと思います。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆そもそものきっかけ - 韓国語☆
実は、ある事情で韓国語の文章を Mule で入力することになりました。
その事情とは「大学の期末試験の過去問」です。
私が通っている東京大学というところは、1 学年 3500 人というマン
モス大学であります。それでも、専門にわかれたあとは少人数講義が
多くなるのですが、一般教養課程では、だれでも色々な科目を履修
可能です。そこで、教養課程の学生の間では、授業に関する情報交換
手段のひとつとして、「WWW 上に過去問をのせる」「その過去問を見て
勉強する」ということが行われています。試験前になると計算機セン
ターのプリンタが過去問であふれるほどです(^^;)
とうぜん私もそれに加担していた(^^;)のですが、あるとき「朝鮮語の
試験問題を載せてやろう」と思いつきました。実際問題として朝鮮語
(韓国語)の履修者が少ないというのはわかっているですが、実は
「中国語の過去問を作る人が増えてほしい」と考えたのです。当時
(今でも)、過去問サイトには、フランス語・ドイツ語の試験問題は
山のようにあったのですが、それと並んでメジャーな第二外国語である
中国語の過去問はほとんどありませんでした。もちろんそれはフォント
の問題があって、簡体字(やハングル文字)と日本語の文字を、基本
的には混在できないせいなのでした。
【補足】ちなみに、朝鮮語という言語には、「韓国語」「朝鮮語」と
いうふたつの言い方があります。というのは、大韓民国では
朝鮮半島全体のを「韓」と、逆に朝鮮民主主義人民共和国で
は朝鮮半島全体を「朝鮮」と呼んでいるからです。(お互い
に相手を呼称するときの「北韓」「南朝鮮」という言い方が
これを示しています。)NHK 教育テレビで番組名を「韓国語
講座」とも「朝鮮語講座」とも呼ぶわけに行かず「ハングル
講座」という苦しい呼び方をしているのもご存じの通りです。
大学の授業では朝鮮語と呼んでいます(私はこれは、日本語で
単に「朝鮮」と称したときは韓国を含めた朝鮮半島全体の総称
であるという用法に傚ったものと認識しています)が、ここで
とりあげるコンピュータ上の処理では、もっぱら韓国の規格に
よる活字を使用しているので、以下では韓国語と呼ばせていた
だきます。
ところで Mule では、このようなことは当然のようにできます。
そこで、Mule の画面を切り取って GIF ファイルにすればいいではない
かと考えました。
ところで、X Windows System に標準的に入っている韓国語フォントには
ふたつあります。「大宇(デウ)明朝」と「大宇ゴシック」です。
Mule 2.3 ではデフォルトの韓国語フォントは大宇明朝になっているの
ですが、このフォントは細かい部分が非常に読みづらいのです。
お手元の環境で M-x help-with-tutorial-for-mule(標準のキー設定なら
C-h T、飯嶋式なら M-h T または M-o C-h T;いずれも T は大文字)と
し、language: には「Korean」と指定してみてください。これが大宇明朝
の指定です。一見したところ何も問題ないように見えますが、じつは
細かい部分(線が出ている・出ていない、横棒が一本・二本、etc.)を
読むときに非常に苦労するのです。
大宇ゴシックでの表示(を画像に落としたもの)が
http://user.ecc.u-tokyo.ac.jp/~mm26024/kakomon/
の中の「必修科目・語学」にありますので、よろしければ見比べてみて
ください。
【お断り】今回は紙面の都合でフォント・表示の話題のみとなります。
韓国語・中国語などの入力・送受信の話については、
リクエストがあれば後日対応したいと思います。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆フォントをいじる☆
さて、前置きが長くなりましたが、フォントを変更するには、
.emacs に、たとえば次のように書きます。
(set-fontset-font "default-fontset" lc-kr
"-*-gothic-medium-r-*--*-ksc5601.1987-*")
最初の "default-fontset" は、通常はこのままでいいでしょう。
ただし、Mule を起動するときに
% mule -fn 7x14 &
のように -fn でフォント指定をしている場合は、この -fn の次の
引数をとって、"7x14" としてください。
次の lc-kr は、韓国語という意味になります。半角英数字のフォントを
変更したい場合は lc-ascii、日本語(全角文字)の場合は lc-jp、
半角カタカナの場合は lc-kana とします。また、ドイツ語・フランス語
などの西欧諸語で使う、アクセント記号のついたアルファベットなどの
フォント設定するときは lc-ltn1 とします。
最後の何やら長い文字列が、フォントの名前です。現在どのような
フォントがインストールされているのかを調べるには、kterm などから
% xlsfonts
としてください。
この長い名前の最後の部分、たとえばここでは「ksc5601.1987-*」が
文字の種類を表しています。全角文字なら「jisx0208.1983-*」、
英数字や独仏文字なら「iso8859-1」、半角カタカナなら「jisx0201.
1976-*」になります。なお、すでにお気づきのように、'*' はワイルド
カードです。
【補足】(1)このような lc-なんとか という名称の一覧については、
/usr/local/share/emacs/19.34/mule.el、および、
/usr/local/share/emacs/19.34/term/x-win.el をご覧
ください。なお、実際のディレクトリ名は、お使いの環境
によって異なることがあります。
(2)半角英数字を指定するときは lc-roman(日本規格の半角
英数字;ASCII との違いは \→¥ と、〜→ ̄)も、全角
文字を指定するときは lc-jpold(1978 年規格の JIS)も
同じフォントに指定しておくといいでしょう。どちらの
ケースもそれぞれ区別は可能なのですが、実際上は区別
しないことの方が多いので。
(3)-fn を指定している場合はちょっとした注意が必要です。
というのは、Mule では「中日韓の全角文字は、半角英数字
のちょうど二倍の幅であると仮定して画面表示を行う」と
いう規則があるからです。韓国語のフォントは標準では
16x16 ドットと 24x24 ドットしかありません。そのため、
通常は半角 8x16・全角 16x16 にしていない場合は、韓国語
を表示させるときだけ
% mule -fn default-fontset -geometry 80x35 &
のようにして起動する必要があります。なお、これでうまく
いかなければ、default-fontset を 8x16 などに変えて
試してみてください。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆IPA がうるさい!☆
さて、フォントの設定にはもうひとつの意図があります。それは、
IPA(international phonetic alphabets;いわゆる発音記号です)
の対策です。
Wnn の場合、日本語入力モードの切り替えに C-\ というキーを使い
ます。ところがときどき、これを押し間違えて、となりの C-] を
押してしまうことがあります。
さて、そうするとどうなるでしょうか。ふだんは [--] が [あ] に
変わるところですが、これが [IPA][--] に変わったのがわかると
思います。
これは quail モードと言って、Mule で特殊文字を入力するために使う
ものです。日本語の場合はかな漢字変換を行うため複雑な機構を要し
ますが、それ以外の、比較的簡単に入力できる文字の場合は、この
quail モードで入力できます。たとえば、[IPA] と出た状態から、
M-s latin-1 RET とすると、[IPA] が [LATIN-1] に変わり、ここで
「?/Como esta'?」と入力すると、「?/」が逆さの '?' に、「a'」が
アクセント記号のついた 'a' に変わるのがわかると思います。
あるいは、M-s hangul RET としてから、dkssudgktpdy と入力して
みると、「アンニョンハセヨ」になります。興味のある人は M-s py RET
なども試してみてください。
ちなみに、この quail を終わらせるには、もういちど C-] を押します。
【後日注】Emacs 20.x では、M-x set-input-method で適切なものを
選ぶと他国語が入力できます。日本語に戻すにはもういちど
M-x set-input-method を実行して、普段使っている日本語
入力手段を、「japanese-egg-wnn」のように指定してください。
さて、横道に逸れてしまいましたが、[IPA] と出ている状態で何かキーを
押してみると、たいていの人の場合、普通の半角英数字(に見えるもの)
が表示されたと思います。
ところが実は、これは半角英数字ではなく、発音記号なのです。
発音記号のフォントがあればそれでいいのですが、ない場合は半角英
数字のフォントで代用表示されるので、見分けがつきません。もちろん
これらは全く違う文字ですから、そのまま保存しても、Mule 以外の
ソフトではまず読めません。あるいは、Shift_JIS で保存した場合には、
Shift_JISで表現できない文字は削除されてしまうので、入力したものが
消えてしまいます。
☆
これに対応するためにどうすればいいかというと、これにはふたつの
方法が考えられます。ひとつは、C-] のキーを使えなくしてしまう方法。
もうひとつは、発音記号を、半角英数字とは区別のつくように表示させ
ることです。
前者は簡単です。(global-set-key "\C-]" nil) としてしまえば、
それ以降、C-] を押しても何も起こらなくなります。ただし、私の場合、
これでは韓国語の入力ができなくなってしまい、困ったことになります。
ということで後者になります。このためにフォント変更をします。
実はフォント変更の他にも、色をつけるなど様々な方法があるのですが、
ここではフォントの変更でしのぐことにしましょう。
とりあえず、どのフォントが使えるのか探します。目指すフォントは、
○発音記号のフォントがあれば、そのフォント
○なければ、標準と同じ大きさの半角英数字フォントで、
標準のものとハッキリ区別がつくもの
です。
☆
まず前者の「発音記号のフォント」というのは、
% xlsfonts '*-muleipa*'
で探すことができます。筆者の環境では
-etl-fixed-medium-r-normal--14-140-72-72-c-70-muleipa-1
-etl-fixed-medium-r-normal--16-160-72-72-c-80-muleipa-1
-etl-fixed-medium-r-normal--24-240-72-72-c-120-muleipa-1
の 3 つが表示されます。数字がいくつか出ていますが、これらの意味
は、
最初の 14,16,24 …字の高さ(ドット単位)
次の 140,160,240 …字の高さ(0.1 ポイント単位)
ふたつ連続する 72…解像度(横方向・縦方向;dpi)
最後の 70,80,120 …字の平均幅(0.1 ドット単位)
となっています。ここで決め手になるのは字幅で、たとえば通常使って
いるフォントが半角 8x16・全角 16x16 ならば、 3 つのフォントのうち
中央のものを選ぶことになります。というわけで、
(set-fontset-font "default-fontset" lc-ipa0 "-*-80-muleipa-*")
と書けばいいことになります。
【補足】字の「平均」幅と言っているのは、プロポーショナルフォントも
考慮しているからです。等幅フォントの場合はすべてこの幅で
一定です。
☆
さて、発音記号のフォントがない場合はどうすればいいでしょうか。
私はこういう場合は、
(set-fontset-font "default-fontset" lc-ipa0
"*-bold-*-80-iso8859-1")
とします。あるいは、高さ 16 ドットのフォントであることを保証する
ために "*-bold-*-16-*-80-iso8859-1" としたり、さらに等福フォント
であることも保証するために "*-fixed-*-bold-*-16-*-80-iso8859-1"
としてもいいでしょう。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆おまけ - メニューバーと反転行を消す☆
今回の話題に関連して、おまけです。
そもそも私が Mule でのフォント関係のことを調べるきっかけは韓国語
だったのですが、その韓国語混じりの文章は、配布前にグラフィック
データに落とす必要がありました。それはもちろん、韓国語の活字の
入っていない環境でも読めるようにするためです。
今回は画面のキャプチャについては触れませんが、キャプチャする場合
には、画面上のメニューバーや、下の反転行(モードライン)が邪魔です。
もちろんキャプチャ後にグラフィックソフトでいじる場合もありますが、
実はメニューバーなどを消すこともできるのです。
☆
まず、メニューバーを消すのは簡単です。(menu-bar-mode -1) とします。
元に戻すのは (menu-bar-mode 1) です。私の場合、
(if (not window-system) (menu-bar-mode -1))
として、コンソールで Mule を起動した場合にはメニューバーを表示
せず(出ていてもクリックできない)、そのぶん編集領域を 1 行余分に
確保しています。
【後日補足】XEmacs では、menu-bar-mode というコマンドは、コンソール
で起動した場合には使えない(X 上で XEmacs を起動した場合
のみ使える)ようです。したがって、上のコードでは XEmacs
をコンソールで起動したときにエラーとなりますので、これを
回避するためには、指定した名前のコマンドが存在するかどうか
を調べるための commandp 関数を使って
(if (and (eq window-system nil) (commandp 'menu-bar-mode))
(menu-bar-mode -1)
)
のようにする必要があります。
☆
モードライン(反転行)を殺すのはちょっと面倒です。この場合には、
まず (1)「モードラインは反転表示しない」という設定をしてから、
(2)「モードラインにどんな文字列を表示するか」という情報を「空っぽ」
に書き換えなければなりません。しかも、一時的に殺すのであれば、
あとで (2) の情報を元に戻せなければなりません。ということで、
ちょっと長くなりますが次のようなマクロを組みました。
(defvar delmonta-save-mode-line-format nil
"delmonta-disable-mode-line における変数退避用領域")
(defvar delmonta-save-mode-line-inverse-video nil
"delmonta-disable-mode-line における変数退避用領域")
(defun delmonta-disable-mode-line ()
(interactive)
(if delmonta-save-mode-line-format
(progn ; 消していたモードラインを復旧する場合
(setq mode-line-inverse-video
delmonta-save-mode-line-inverse-video)
(setq mode-line-format delmonta-save-mode-line-format)
(setq delmonta-save-mode-line-format nil)
) ; 以下、モードラインを消す場合
(setq delmonta-save-mode-line-inverse-video
mode-line-inverse-video)
(setq mode-line-inverse-video nil)
(setq delmonta-save-mode-line-format mode-line-format)
(setq mode-line-format "")
)
(update-mode-lines)
)
【補足】Emacs 20.x には、update-mode-lines コマンドがありません。
ですから、Emacs 20.x でも動かす場合は、(update-mode-lines)
の部分を
(if (fboundp 'update-mode-lines) (update-mode-lines))
と変えてください。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
☆次回予告☆
次回は、「第 13 回 キー操作集大成〜コンソールからファンクション
キーを使う〜」の予定です。第 11 回でやり残したカーソルキーと
ファンクションキーの問題、また f10 キーをより ATOK 的にする方法、
その他の変なキー操作などについてご紹介致します。
予定表(と、自分の ~/.emacs (^^;))を見てみると残り回数も少なく
なりましたが、どうぞ最後までお付き合いくださいませ。
それではまた♪
========================================================================
極私的 Emacs カスタマイズ紹介マガジン Emacs をわたし色に染めて♪
☆発行人☆
でるもんた・いいじま <L94102@mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~l94102/emacs/
※このメールマガジンで取り上げてほしいテーマ、ご意見など
ありましたら、上のメールアドレスまでお気軽にどうぞ。
☆配信☆
このメールマガジンは、「インターネットの本屋さん・まぐまぐ」を
利用して配信しています。
http://www.mag2.com (マガジン ID=0000013484)
☆バックナンバー・登録解除・メールアドレス変更は☆
上記のホームページまでどうぞ。
なお、手動での登録解除は行っておりませんのでご了承下さい。
=========================================================================
Copyright © IIJIMA Hiromitsu aka Delmonta,
2016/03/10 15:09 JST
これは「古文書」です。
古くなった情報も原則未修正で保存していますのでご注意ください。