2013/07/30

LinuxMintでWindowsのフォントリンク的なことをする。


普段特に不自由することなくLinuxMintを使っておりましたが、
最近もう少し別のフォントの組み合わせを試したいなーと思いました。
別にRicty嫌いじゃないのですが(むしろ結構好きなフォントではありますが。。 ->参考: いい感じのLinuxMintなUltrabook環境を手に入れた)、
最近だとDejaVu Sans Monoのほうが気に入っていたりします。

ただ、大体のLinuxのTerminalなんかはfontwide設定的なものがなくて、
「英数字はこっちのフォントで、日本語はこっち使いたい!」的なことがあっさりできなかったりします。

LinuxMinitやUbuntu環境だと大抵の場合は
英字のみのフォントを指定すると問答無用でTakaoフォントになっちゃうんで、
もうちょい選択の幅を広げられないかなーと思って、Windowsのフォントリンクっぽいことできんかな?
と調べてみたのでメモ。(Takaoフォントもキレイでいいんだけどね。)


調べてわかったこと

結論から言うとローカルに ~/fontconfig/.fonts.conf を作ることでできました。
大体以下のような感じ書けばいいっぽいです。

※ 私の環境はLinuxMinit15でこのファイルパスでしたが、
   Ubuntuだと ~/.conf/fontconfig/fonts.conf のケースが多いようです。
   fc-cache -vfを叩いて読み込んでる設定ファイルを確認してみてもいいかもです。

  • ~/.fontconfig/fonts.conf
    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
        <match target="pattern">
            <test name="lang" compare="contains">
                <string>ja</string>
            </test>
            <test qual="any" name="family">
                <string>{{英語フォントのfamily名}}</string>
            </test>
            <edit name="family" mode="prepend" binding="strong">
                <string>{{日本語フォントのfamily名}}</string>
            </edit>
        </match>
    </fontconfig>
    

これで、ここで指定した英語フォントに対象の日本語フォントをフォントリンクさせるような感じになります。
ちなみに、最近私のお気に入りの DejaVu Sans Mono(for Powerline)やさしさゴシックを組み合わせる場合は
以下のような感じ。(もちろん、両方のフォントがインストール済みであることが前提)

  • ~/.fontconfig/fonts.conf
    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
        <match target="pattern">
            <test name="lang" compare="contains">
                <string>ja</string>
            </test>
            <test qual="any" name="family">
                <string>DejaVu Sans Mono for Powerline</string>
            </test>
            <edit name="family" mode="prepend" binding="strong">
                <string>07YasashisaGothic</string>
            </edit>
        </match>
    </fontconfig>
    

確認する際は
## 英語環境の場合に実際に使われるフォント
LANG=en_US.UTF-8 fc-match "英語フォントfamily名"

## 日本語環境の時に実際に使われるフォント
LANG=ja_JP.UTF-8 fc-match "英語フォントfamily名"
をターミナルで実行すればOK。
↑の例だと以下のような感じ。

実際に確認するとこんな感じ


同じ DejaVu Sans Mono for Powerline でも、
英語環境では元のままで、日本語環境では 07YasashisaGothic(やさしさゴシック)になっていますね!

これでDejaVu Sans Mono for Powerlineフォントを選択しても日本語部分は自動的にやさしさゴシックが適応されるので、
GnomeTerminalなんかでも2つのフォントを組み合わせることができます。

DejaVu Sans Mono for Powerlineの設定をしているGnomeTerminal。
ちゃんと日本語はやさしさゴシックになっている。



これさえ出来れば日本語に対応したフォントか気にすることなく
フォント選択の幅が広がりますね!


あとがき的な何か

ターミナル環境については実は一度urxvtも試してみたのですが、
確かに別々にフォント設定できるんだなーとか
予想以上に軽量で快速で見た目もモダンな感じになるんだなーという事はわかったのですが、
なんだかんだでクリップボード絡みのやり取りが怪しいし、
SSH中にサクサク文字コード変えられなかったりするんで(やり方知らないだけ?)、
たまにやる古いEUC-JPな環境のサーバでの作業や障害対応(特に日本語絡むとき)なんかは死ねるなと。

さらにはこのへん調べている時に
実はgvimにfontwide設定なるものがあることを今更ながら初めて知ったり、Emacsでも同様のことができるなど、
フォント周りを調べるつもりが、結構身近なツールのことを調べるきっかけになって面白かったです。
RoxTerminalなんて見つけましたが、ログイン時にSSHかませたりできそうだったんで、
もしかしたらPuTTYやPoderosa的な使い方できるかな?と思ってみたり。これはこれで色々試すと面白そう。

フォントは些細なことですが仕事柄長時間見るものですし、
個人的にはこのへん結構大事だと思ってます。好きなフォントだとだいぶヤル気も違います。
普段使うものだからこそ、たまには時間をとってメンテしてみるのもいいものですね。