Wheezyのデフォルトのフォント設定がヘンな気がするので調べてみた

nogajun
nogajun

_

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>

まとめ

  1. フォントマッチングの順番が今時の感じじゃないので順番を変えたほうがいいよね。
  2. 日本語フォントはヒンティングを無効にしたほうがキレイだよね。

ということを思いました。

で、fontconfig-configパッケージで解決するとなると、新しいフォントが出るたびに書き換えてもらわないといけないし、もしかすると他の言語のフォント設定に影響をあたえるかもしれないから、中国語フォントのfonts-arphic-ukai, fonts-arphic-umingパッケージみたいにフォントパッケージがfontconfigの設定を持つといいのかなーと思ったりしました。

どの方法がいいかもう少し考えてから、やまねさんに相談?