Wheezyのデフォルトのフォント設定がヘンな気がするので調べてみた
VirtualBoxにWheezyをインストールしたのですが、デスクトップ環境を入れた時、フォントの設定がおかしな気がしたので調べてみたのでメモ代わりに書きます。
まず、fontconfigでlang=jaの場合で「何もなし」「sans」「serif」「monospace」で、どのフォントにマッチするか調べてみた。
$ for i in {'',sans,serif,monospace};do fc-match "$i:lang=ja";done
VL-Gothic-Regular.ttf: "VL Gothic" "regular"
VL-Gothic-Regular.ttf: "VL Gothic" "regular"
VL-Gothic-Regular.ttf: "VL Gothic" "regular"
VL-Gothic-Regular.ttf: "VL Gothic" "regular"
sansでもserifでも全部VLゴシックが使われてるみたい。 だけど、InkscapeやGIMPだとserifはIPA明朝がマッチしてるから間違ってるような…。sansとmonospaceはVLゴシックがマッチしてた。
$ lsof | grep inkscape | grep ttf
inkscape 3919 jun mem REG 8,1 3816416 137522 /usr/share/fonts/truetype/vlgothic/VL-Gothic-Regular.ttf
inkscape 3919 jun mem REG 8,1 8046712 137519 /usr/share/fonts/opentype/ipafont-mincho/ipam.ttf
inkscape 3919 jun mem REG 8,1 139628 133230 /usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf
inkscape 3919 jun mem REG 8,1 333636 132090 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
inkscape 3919 jun mem REG 8,1 363200 132087 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
inkscape 3919 jun mem REG 8,1 720012 132092 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
inkscape 3919 jun mem REG 8,1 32556 139670 /usr/share/fonts/truetype/lyx/cmmi10.ttf
inkscape 3919 jun mem REG 8,1 23744 139664 /usr/share/fonts/truetype/lyx/eufm10.ttf
inkscape 3919 jun mem REG 8,1 24412 139666 /usr/share/fonts/truetype/lyx/esint10.ttf
GNOME 3のフォント設定のデフォルトがどうなってるかというと
$ gsettings list-recursively | grep font | grep interface
org.gnome.desktop.interface document-font-name 'Sans 11'
org.gnome.desktop.interface font-name 'Cantarell 11'
org.gnome.desktop.interface monospace-font-name 'Monospace 11'
全部VLゴシックにマッチしてるのか。
/etc/fonts/conf.avail/65-nonlatin.conf(/etc/fonts/conf.d/65-nonlatin.confとしてシンボリックリンクが貼られている)のsans-serifの順番を見てみると、MSゴシックが一番で次が梅Pゴシック、ついでVLゴシックがきてるからIPAフォントは後回しにされてる。
それにしても、なぜこの順番なんだ? 自分の気持としてはIPA PゴシックがきてVL Pゴシックがきてほしいな。
<family>MS Gothic</family> <!-- han (ja) -->
<family>UmePlus P Gothic</family> <!-- han (ja) -->
<family>VL Gothic</family>
<family>IPAMonaGothic</family>
<family>IPAGothic</family>
<family>Sazanami Gothic</family>
<family>Kochi Gothic</family>
<family>MS ゴシック</family>
sansのほうも見てみるとMS明朝とさざなみ明朝ですか…。さざなみ明朝は入ってないから飛ばされてるけど、入ってたら酷いことになってるな。
<family>MS Mincho</family> <!-- han (ja) -->
<family>Sazanami Mincho</family>
<family>IPAMonaMincho</family>
<family>IPAMincho</family>
<family>Kochi Mincho</family>
<family>MS 明朝</family>
ということで/etc/fonts/conf.avail/65-nonlatin.confを~/.fonts.confにコピーして、編集してみた。 (ubuntuと違うけど、Wheezyだと~/.config/fontsconf/fonts.confに置いても読んでくれなかった)
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>IPAPMincho</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>IPAPGothic</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>VL Gothic</family>
</prefer>
</alias>
</fontconfig>
fc-matchで確認してみる。
$ for i in {'',sans,sans-serif,monospace};do fc-match "$i:lang=ja";done
ipagp.ttf: "IPAPGothic" "Regular"
ipagp.ttf: "IPAPGothic" "Regular"
ipagp.ttf: "IPAPGothic" "Regular"
VL-Gothic-Regular.ttf: "VL Gothic" "regular"
sans-serifだけヘンだけど、それ以外は大丈夫かな。
ヒンティングがヘン
sans,sans-serif,monospaceで思った通りのフォントが選択されるようになったけれど、フォントがギザギザです。 これはhintingかなと思ったのでgnome-tweak-toolsでhitingを「none」にすると大当たりでした。
で、これは/etc/fonts/conf.avail/25-unhint-nonlatin.confがあるので、/etc/fonts/conf.d/にシンボリックリンクを貼ってあげると大丈夫なはず…。だけどファイルの中身を見るとあらびっくり。 kochiとsazanamiしか書いてません!><
ということで ~/.fonts.confにヒンティングを無効にする設定を追記してこんな感じにしてみた。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>IPAPMincho</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>IPAPGothic</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>VL Gothic</family>
</prefer>
</alias>
<match target="font">
<test name="family" compare="eq">
<string>IPAMincho</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" compare="eq">
<string>IPAPMincho</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" compare="eq">
<string>IPAGothic</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" compare="eq">
<string>IPAPGothic</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" compare="eq">
<string>VL PGothic</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="family" compare="eq">
<string>VL Gothic</string>
</test>
<edit name="hinting" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
まとめ
- フォントマッチングの順番が今時の感じじゃないので順番を変えたほうがいいよね。
- 日本語フォントはヒンティングを無効にしたほうがキレイだよね。
ということを思いました。
で、fontconfig-configパッケージで解決するとなると、新しいフォントが出るたびに書き換えてもらわないといけないし、もしかすると他の言語のフォント設定に影響をあたえるかもしれないから、中国語フォントのfonts-arphic-ukai, fonts-arphic-umingパッケージみたいにフォントパッケージがfontconfigの設定を持つといいのかなーと思ったりしました。
どの方法がいいかもう少し考えてから、やまねさんに相談?