この記事を作った動機

 最近 Linux 環境を使っていると、noto-fonts-cjk をインストールしているにもかかわらず、それが機能しないことがあった。具体的には、中華系フォントが日本語フォントとして優先されて表示され、読めないことはないが、地味に見慣れない文字になってしまう。今までは、Linux 環境のフォントは読めればいい、映ればいいで放置していたが、流石にそれはないなと思ったので、設定をしていた。

中華文字の例/
中華文字の例/
中華文字の例/

 当然いちいち設定するときに調べるのはしんどいので、まとめが欲しいと思い記録を取ることにした。今回は、GNOME に関する設定と、fontconfig に関する設定の 2 つについて記録を取る。

前提

フォントの配置場所と更新

システム全体

 通常はこのフォルダは標準で何もしなくてもあるはずである。ない場合は、別の場所にフォントが保存されているか、インストールした OS が崩壊している可能性がある。

/usr/share/fonts

ユーザ単体

 ない場合はフォルダを新規作成する。

~/.local/share/fonts

新しく配置したフォントの反映

sudo fc-cache -fv

GNOME-Tweaks

 gnome-tweaks をインストールし、単に GUI を開いてポチポチするだけである。GNOME 環境ではすでにフォントがある程度デフォルトで固定されており基本的に崩れにくいため、デフォルトで満足しているならそのままでも良いと思われる。その場合は特別な設定が少なくとも GNOME に関しては、必要ないということである。

yay -Sy gnome-tweaks
# sudo pacman -Sy gnome-tweaks
GNOME Tweaks フォント設定画面

Fontconfig

設定配置場所

システム全体

 ない場合は、テキストファイルとして新規作成する。

/etc/fonts/local.conf

ユーザ単体

 ない場合は、テキストファイルとして新規作成する。

~/.config/fontconfig/fonts.conf

フォント名を調べる

noto-fonts-cjk

 以下の例では、Noto Sans CJK JPが今回取り扱うフォント名である。

fc-list | grep "noto" | grep "Regular" | grep "Noto Sans CJK" | grep "JP"
# /usr/share/fonts/noto-cjk/NotoSansCJK-Light.ttc: Noto Sans CJK JP,Noto Sans CJK JP Light:style=Light,Regular
# /usr/share/fonts/noto-cjk/NotoSansCJK-Regular.ttc: Noto Sans CJK JP:style=Regular
# ...

Comic Sans

 以下の例では、/usr/share/fonts 配下にあらかじめ配置した Windows で使われているフォント Comic Sans についてフォント名を調べた例である。フォント名は、Comic Sans MSである。Windows 環境があれば、C:/Windows/Fonts あたりにある可能性がある。

fc-list | grep "Comic"
# /usr/share/fonts/comic-sans-ms-font-family/COMIC.TTF: Comic Sans MS:style=Regular
# ...

設定内容例 (/etc/fonts/local.conf)

 今回の例では、sans-serifsystem-ui について、それぞれフォントを設定する。以下の設定例では、Comic Sans MS をまずは優先的に使うようにし、日本語フォントなど Comic Sans MS にないフォントは代替として、Noto Sans CJK JP を使うようにした例である。設定は、ファイルを保存、作成した瞬間に反映される。設定前と後の比較のようにして、fc-matchコマンドで確認できる。システム全体での反映には再起動が必要である。

<?xml version="1.0"?>
 <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
 <fontconfig>
     <alias>
         <family>sans-serif</family>
         <prefer><family>Comic Sans MS</family></prefer>
         <prefer><family>Noto Sans CJK JP</family></prefer>
     </alias>
     <alias>
         <family>system-ui</family>
         <prefer><family>Comic Sans MS</family></prefer>
         <prefer><family>Noto Sans CJK JP</family></prefer>
     </alias>
 </fontconfig>

設定前と後の比較

設定前

fc-match "sans-serif"
# NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
fc-match "system-ui"
# NimbusSans-Regular.otf: "Nimbus Sans" "Regular"

設定後

fc-match "sans-serif"
# COMIC.TTF: "Comic Sans MS" "Regular"
fc-match sans-serif:lang=ja
# NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"

fc-match "system-ui"
# COMIC.TTF: "Comic Sans MS" "Regular"
fc-match "system-ui:lang=ja"
# NotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"

関連するページ

参考にしたサイトとか