とりあえず見てくれ

dotfiles/fonts.conf at master · endaaman/dotfiles

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
   <edit name="dpi" mode="assign">
     <double>96</double>
   </edit>
  </match>

  <!-- rendering -->
  <match target="font">
    <edit name="antialias" mode="assign">
      <bool>true</bool>
    </edit>
    <edit name="autohint" mode="assign">
      <bool>false</bool>
    </edit>
    <edit name="hinting" mode="assign">
      <bool>false</bool>
    </edit>
    <edit name="hintstyle" mode="assign">
      <const>hintnone</const>
    </edit>
    <edit name="rgba" mode="assign">
      <const>rgb</const>
    </edit>
    <edit name="lcdfilter" mode="assign">
      <const>lcdlight</const>
    </edit>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
    <test name="weight" compare="more">
      <const>medium</const>
    </test>
  </match>

  <!-- alias -->
  <alias>
    <family>serif</family>
    <prefer><family>Ubuntu</family></prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer><family>Ubuntu</family></prefer>
  </alias>
  <alias>
    <family>sans</family>
    <prefer><family>Ubuntu</family></prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer><family>Ubuntu Mono</family></prefer>
  </alias>

  <!-- customize -->
  <match>
    <test name="family"><string>Ubuntu</string></test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Ubuntu</string>
      <string>MotoyaLMaru</string>
      <string>Noto Sans CJK JP</string>
    </edit>
  </match>
  <match>
    <test name="family"><string>Ubuntu Mono</string></test>
    <edit name="family" mode="prepend" binding="strong">
      <string>UbuntuMonoDerivativePowerline Nerd Font</string>
      <string>DejaVu Sans Mono</string>
      <string>Noto Emoji</string>
      <string>Migu 1M</string>
      <string>Noto Sans Mono CJK JP</string>
    </edit>
  </match>
</fontconfig>

上のほうがレンダリング設定。これをしないとフォントによってはジャギったりして残念な感じになる。

  • UbuntuUbuntuモトヤLマルベリ3等幅Noto CJK JP

  • Ubuntu MonoUbuntu Mono(with Powerline NERD Font)Dejavu Sans MonoNoto EmojiMigu 1MNoto Sans CJK JP

と解決するようにして、serif sans-serif sansUbuntuを使用し、monospaceUbuntu Monoを使うように設定している。Dejabu Sans Monoを挟んでいるのは一部の使いたい半角記号がUbuntu Monoに収録されていないためである。

直接monospaceとかに割り当てようとしてもうまくいかないので、一番最初に解決されるフォント(この場合はUbuntuUbuntu Mono)に日本語とか絵文字フォントとかぶら下げていくのが良い。

こんな感じの設定にしておけばLinuxデスクトップのフォント設定とかを一切いじらず好みのフォントになって楽。

確認とか

各フォントがどのような優先度になっているかは

$ fc-match -a Sans | head -n 10

で、どのようなフォントがあるかは

$ fc-list | peco

で、 peco等出力を整形できるコマンドにパイプすると味が良い。