Linuxのフォント設定
はじめのはじめに
この記事はプロコンゼミ(SPC同好会) その2 Advent Calendar 2018の8日目の記事です。
はじめに
Linuxでフォントをいい感じにしたい!!!Googleが良さげなのだしている!!!
ということでLinux環境でのフォントをNotoにする記事です。
使用している環境は
Notoとは
2012年、我らがGoogleは「Noto」というフォントファミリーを公開。
2014年7月に、中国、日本、韓国のフォントファミリーである「Noto Sans CJK」がバージョン1.000として公開。
2017年3月に「Noto Serif CJK」が同じくバージョン1.000として公開。
世界中の言語をサポートすることを目標
すべての言語に対応したフォントを開発することで"豆腐"が現れることがなくなるようにという意味を込めてNoto(no more tofu)という名称が付けられた
だそうです。ぜひ頑張って欲しいです。(圧倒的信者)( Noto - Wikipedia参照)
fontの種類
フォントはいろいろな企業や団体または個人などから沢山出されています。
そのためフォントの種類というときりがないのですが、一般的なフォントの種類を表す「フォントファミリー」というもので分けることができます。
- sans-serif
- serif
- monospace
のようなものがあります。以下記事参照。
フォントの設定
fontconfig
フォントの設定は各アプリケーションからできますが、途方に暮れる作業になるでしょう。なのでフォントファミリーにフォントを割り当てるような設定をします。
では、どのようにしてフォントファミリーにフォントを割り当てるのか。「fontconfig」を使います。
https://www.freedesktop.org/wiki/Software/fontconfig/
fontconfigは主に以下2つの機能をもちます。
- 新しく入ってきたフォントを検出するなどの内部構成の構築
- 似たようなフォントを返す
fontconfigはいくつかのコマンドを提供します。設定がうまくいかないときの切り分け手段として有用です。
- fc-list
- fc-match
- fc-cache
- fc-cat
- fc-query
- fc-scan
- fc-pattern
- fc-validate
以下参照
実演
割り当てるフォントをインストール(今回はNoto)
sudo pacman -S noto-fonts
fontconfigの設定ファイルを然るべきディレクトリに配置
グローバル設定にする場合は/etc/fonts/local.conf
に書き込むらしいです。書き込む内容は以下のURLの「Configuration File Format」節を真面目によんで書き込まなければならないのでしょうが自分はArch Linuxのサンプルから持ってきました。適当に編集したのでもしかしたら必要のない設定をしているかもしれません。
https://www.freedesktop.org/software/fontconfig/fontconfig-user.html
vim .config/fontconfig/fonts.conf ------------------------------- <?xml version='1.0'?> <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> <fontconfig> <!-- Default sans-serif font --> <match target="pattern"> <test qual="any" name="family"><string>sans-serif</string></test> <edit name="family" mode="prepend" binding="same"><string>Noto Sans</string> </edit> </match> <!-- Default serif fonts --> <match target="pattern"> <test qual="any" name="family"><string>serif</string></test> <edit name="family" mode="prepend" binding="same"><string>Noto Serif</string> </edit> </match> <!-- Default monospace fonts --> <match target="pattern"> <test qual="any" name="family"><string>monospace</string></test> <edit name="family" mode="prepend" binding="same"><string>Noto Sans Mono</string></edit> </match> <!-- Fallback fonts preference order --> <alias> <family>sans-serif</family> <prefer> <family>Noto Sans</family> </prefer> </alias> <alias> <family>serif</family> <prefer> <family>Noto Serif</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Noto Sans Mono</family> </prefer> </alias> </fontconfig> -------------------------------
もし、ある特定のアプリケーションでフォントが適応されない場合はそれぞれの設定ファイルにてフォントファミリーを指定すれば解決します。
vim .config/sakura/sakura.conf ------------------------------- font=monospace 11 -------------------------------
vim .config/i3/config ------------------------------ font pango:monospace 9 ------------------------------
fc-match serif
とターミナルで打ったときに設定前と設定後で以下のようになるかと思います。
(設定前)ipam.ttf: "IPAMincho" "Regular" (設定後)NotoSerif-Regular.ttf: "Noto Serif" "Regular"
おわりに
参考記事
以下の記事を参考にしました。ありがとうオープンソース。
https://www.freedesktop.org/software/fontconfig/fontconfig-user.html