Linuxにフォントをインストールしたときのメモ

環境

はまったこと

Googleの指南どおりにインストールしてもフォントが読み込まれていないようでした。 GUIのフォントの設定画面では、インストールしたフォントはすべて文字化け状態でした。

解決策

今回の問題はFontconfigが、インストールしたフォントのファイルに対するアクセス権をもっていなかったのが原因のようです。chmodで読み込めるようにすると治りました。

インストール手順

まずは必要なフォントをダウンロードします。 今回はGoogleのNotoCJKを入れます。

https://www.google.com/get/noto/

リンク先から目的のものをダウンロードします。

ダウンロードしたzipファイルを解凍して、Fontconfigが見つけられる場所に コピーします。 個人用の設定なら~/.fonts/、システム全体での設定なら/usr/share/fonts/以下の任意のフォルダにコピーします。

cd ~/Downloads   # or wherever you downloaded a font pack.
unzip <font package>.zip
# for a single user
mkdir -p ~/.fonts
cp *otf *otc ~/.fonts
# for all users
sudo mkdir -p /usr/share/fonts/opentype/noto
sudo cp *otf *otc /usr/share/fonts/opentype/noto

続いてコピーしたフォントのファイルをFontconfigが読み込めるようにします。

sudo chmod +r /path/to/copied/fonts/dir/*.otf
sudo chmod +r /path/to/copied/fonts/dir/*.otc

続いてインストールしたフォントを使用するように設定します。 ~/.config/fontconfig/fonts.confを作成し、以下のように記述します。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <alias>
                <family>serif</family>
                <prefer>
                        <family>Noto Serif CJK JP</family>
                </prefer>
        </alias>
        <alias>
                <family>sans-serif</family>
                <prefer>
                        <family>Noto Sans CJK JP</family>
                </prefer>
        </alias>
        <alias>
                <family>sans</family>
                <prefer>
                        <family>Noto Sans CJK JP</family>
                </prefer>
        </alias>
        <alias>
                <family>monospace</family>
                <prefer>
                        <family>Noto Mono</family>
                </prefer>
        </alias>
</fontconfig>

(Noto ...となっているところはインストールしたフォント名に変えてください。)

最後にfc-cacheでFontconfigのcacheを更新します。

sudo fc-cache -f -v 

必要であれば再起動します。

参考