STed2で日本語部分にもmilkjfフォントを使用するための覚え書き
「STed2が「Cannot open display. Aborting.」となって起動できない件についてとその対処」において、milkjfだけを使おうとして「-milkjf-fixed-*-r-normal--16-*-*-*」を指定*1してみたのだが、何故か化けてダメだった。
テストプログラムの結果は以下。
(2014/10/2)リンク先を修正
pattern: -milkjf-fixed-*-r-normal--16-*-*-* default: missing: JISX0208.1983-0 missing: KSC5601.1987-0 missing: GB2312.1980-0 missing: ISO10646-1 found: -milkjf-fixed-bold-r-normal--16-150-75-75-c-80-iso8859-1,-milkjf-fixed-bold-r-normal--16-150-75-75-c-80-iso8859-1,-milkjf-fixed-bold-r-normal--16-150-75-75-c-80-jisx0201.1976-0
原因として考えられたのは、xfontselで見たときに、milkjfフォントは「JISX0208.1990-0」の文字集合を使用すること(font-jis-miscのjiskanフォントなど、日本語部分が化けないフォントは、JISX0208.1990-0ではなくJISX0208.1983-0)。
先日「STed2の起動ができない」と悩んでいた中でstraceを試してみた*2ときに/usr/share/X11/locale/ja_JP.UTF-8/XLC_LOCALEというファイルを読んでいたということをふと思い出し、この中にフォント関係の記述が含まれていたような気がしたため、開いてみると、「JISX0208.1983-0」に関する記述を発見。
--- /usr/share/X11/locale/ja_JP.UTF-8/XLC_LOCALE.orig +++ /usr/share/X11/locale/ja_JP.UTF-8/XLC_LOCALE @@ -39,6 +39,7 @@ } font { primary JISX0208.1983-0:GL + substitute JISX0208.1990-0:GL } }
上のようにして、JISX0208.1990-0を使用するように編集後、テストプログラムの結果は少し変わった。*3
pattern: -milkjf-fixed-*-r-normal--16-*-*-* default: missing: KSC5601.1987-0 missing: GB2312.1980-0 missing: ISO10646-1 found: -milkjf-fixed-bold-r-normal--16-150-75-75-c-80-iso8859-1,-milkjf-fixed-bold-r-normal--16-150-75-75-c-80-iso8859-1,-milkjf-fixed-bold-r-normal--16-150-75-75-c-160-jisx0208.1990-0,-milkjf-fixed-bold-r-normal--16-150-75-75-c-80-jisx0201.1976-0
JISX0208.1990-0が使用されていることが分かる。
EUC-JP向けの/usr/share/X11/locale/ja/XLC_LOCALEでは「substitute JISX0208.1990-0:GL」の記述があるのだが、何故かUTF-8用にはないというのが化ける原因のようだった。
STed2上の表示も化けず、milkjfフォントが日本語部分にも使用されて綺麗になった。
なお、JISX0208.1983とJISX0208.1990の違いはJIS第2水準漢字が2つ追加されたことと字形変更のみとのこと。
参考URL:
- http://www.asahi-net.or.jp/~yw3t-trns/code/jisx0208.html
- http://www.d2.dion.ne.jp/~imady/charset/jis.html
使用したバージョン:
- libX11*4 1.1.3