Linuxのフォント設定

はじめのはじめに

この記事はプロコンゼミ(SPC同好会) その2 Advent Calendar 2018の8日目の記事です。

adventar.org

はじめに

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

のようなものがあります。以下記事参照。

book.studio947.net

フォントの設定

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

以下参照

qiita.com

実演

割り当てるフォントをインストール(今回は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

フォント設定/サンプル - ArchWiki

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"

おわりに

参考記事

以下の記事を参考にしました。ありがとうオープンソース

Noto - Wikipedia

Fontconfig - Wikipedia

fontconfig

https://www.freedesktop.org/software/fontconfig/fontconfig-user.html

フォント - ArchWiki

フォント設定 - ArchWiki

フォント設定/サンプル - ArchWiki

Google Noto Fonts

Updates – Google Noto Fonts

https://book.studio947.net/article/1634/

LINUX(CentOS)のフォントのあれこれ - Qiita