10月 262011
 

ウェブで検索すると、もう既にたくさんの人がこの題材で色々書いているようですね。なのであえて書く必要も無いのではないか。と、ちょっと思うのですが、僕も書いてみます;-)。

ちょっと変わった方向性から書こうと思っています。

まず、xterm とか emacs などは X11 のリソース設定しているのですが、今回はそれについては一切は書きません。コマンドプロンプトから以下のコマンドを投入し、リソース情報を全てさっぱり削除しそこから xterm を起動します。

% xrdb -remove

 
このあと、プロンプトから xterm を起動します。まずはオプション無しで。すると以下のような状態で xterm が起動すると思います。そして jman ls と打った状態です。

xterm-default.png

なお、このブログでは写真のサイズは横幅 500 ピクセルと決めているので、今後は全て横幅 500 ピクセルで表示します。上記のキャプチャのみは横幅が 488 ピクセルなのでちょっと小さめ。

まぁ、半角文字も日本語文字も Fixed フォントで表示されているので一応は無事に起動して、無事に表示できるようです。

問題はここからで、せっかくなので自分好みのフォントを利用したい。はたまた xterm は pango やcairo をリンクしているのでアンチエイリアスを有効にしたい。などと思い、色々な人が格闘しているわけですね。
しかし、全くダメ・・。利用に耐えられない表示のしかたをしてくれます。これについて、皆さん色々書いているんですね。

xterm 自体は X11 のリソースとは別にオプションでフォントを指定できます。~/.Xresources では XLFD でフォントを記述するのですが、 -fa オプションでは fc-list で表示されるフォント名を指定します。

以下、2,3 のフォントを指定したときのコマンドラインとキャプチャを掲載してみます。

-.フォントサイズは 10 で画面の大きさは 80×30 です。
-. LANG は ja_JP.UTF-8 です。

o.メイリオフォントを指定して起動

% xterm -fa メイリオ -fs 10 -geometry 80x30

 
xterm-meiryo_500x400.png

o.Osaka の UNICODE フォントを指定して起動

% xterm -fa osaka_unicode -fs 10 -geometry 80x30

 
xterm-osaka_unicode_500x400.png

osaka_unicode は比較的良い線行っているんですが、もうひといきっ!! って感じ・・。

それにしても皆さん、この表示を嫌うんですな。カーソールの四角は全角四角ちっく。あげくの果てには全角文字の間に半角スペースが入る。非常に横長な xterm の起動画面になってしまう。

ports から xterm を make するときには WITH_WIDE_CHARS=true を指定する必要があるのでこれは有効になっています。そして、xterm でマルチバイト、CJK フォントを正しく表示するためのオプションとしては -cjk_width ってのがあるのですが、この -cjk_width がまるで有効になっていない。と、言うことですね。

いやぁ・・。まいったまいった・・。

UTF-8 を扱う場合、日本語の表示には 4Byte 必要なのだそうで、その影響が出て文字の間に半角スペースが入るとか入らないとか。考えてみると MySQL で UTF-8 を利用すると Key のサイズが既定値未満なはずなのに「キー値が長すぎる。」とエラーになる時があるのですが、その現象とも確かに似ているような似ていないような気がしますね。

で、本当に正しく表示できんのかい?とか思い、自分の持っている(インストールされている)フォント全てを xterm に指定して確認してみました。

% fc-list | wc -l
487

 
ふむ。僕の FreeBSD には 487 個のフォントがインストールされているようですね;-)。では、以下のコマンドを実行してコマンドイメージを出力し、早速確認してみましょう。

% fc-list | awk -F, '{print "xterm -fa \"" $1 "\" -fs 10 -geometry 80x30 &"}'

 
これを | sh -X とかするととんでもないことになるので、5,6 個ずつ起動することにします。

確認してみたところ、有名どころなフォントは全て全滅でしたね。正しい表示を全くしてくれません。
あと、日本語を持っていないフォントは日本語部分は表示してくれない。コード自体を持っていてもフォント自体が無いフォントは豆腐が表示されます。

そんな中、一個だけありましたよ。正しく日本語を表示してくれるフォントが;-)。

% xterm -fa "細明體" -fs 10 -geometry 80x30

 
xterm-03_500x400.png

おぉ。ちゃんと日本語が表示できて、文字と文字の間に半角スペースが入ることなく表示してくれていますね。

「けっ。そんなこと言ったってオメーの持っているフォントだろっ。」とか思うんですが、このフォント名で検索してみると、あややややや? このフォントはフリーなの? (@_o)。
いやね。自分自身、このフォントを、いつ、どー言うタイミングでインストールしたか全く覚えてないんですよf(^^;;。

以下のサイトからダウンロード可能なフォントのようです。

http://ja.cooltext.com/Download-Font-細明體+MingLiU

ダウンロードしたあと、インストールして、そのあと fc-cache すれば利用可能になるかと思います。

ちょっと明朝体チックでそれでいて色が薄いので常用に耐えられるかはちょっと疑問ですが、一応は正しい表示をしてくれてアンチエイリアスが有効になって xterm が起動してくれます。

あと、この 細明體 ってフォントは上記サイトでは「日本語フォント」ではなく「中国語フォント」のカテゴリの中に入っているんですね。 中国語のフォントの中に日本語の文字のパタンが埋め込まれている、なんともすごいフォントなのでしょうなぁ。

と、言うことで、今の段階の xterm は、もしかしたらフォント側で対応できていれば綺麗に表示できるんではないかなぁ。と思った僕の考え、合ってる?

あと、「僕も私も xterm で表示が綺麗になるフォント持っているよー。」ってのがあったら教えて頂けませんでしょうか。等幅ゴシックなフォントがあれば嬉しいなぁ。と、ちょっち思っております;-)。

  1 件のコメント to “xterm の日本語表示。”

  1. あう。久しぶりにホームディレクトリの再構築を行ったのですが、フォントをアンチエイリアスで利用するためには ~/.fonts.conf の設定をキチっとやってないとダメですねー。
    と、言うことで、今回のエントリーは、 ~/.fonts.conf の設定が既にばっちり出来ている。と、いう状態でのお話です。
    ~/.fonts.conf の設定がわからない場合にはメールでも頂ければと思います。

 コメントを書いてください。

HTML タグが利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(必須項目)

(必須項目)

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください