システム言語

日本語フォントの設定

ページ作成日 2020/4/11
ページ更新日 2021/2/2

Linuxが普及し始めた2000年代は、2000年にリリースされた「東風フォント」や、2003年にリリースされた「さざなみフォント」、そして2007年にリリースされた「IPAフォント」ぐらいしか選択肢がありませんでした。
2010年代は、フリーの様々な美しい日本語フォントが登場し、選択肢が広がりました。
Slackwareには、デフォルトで以下の日本語フォントが入っています。

Noto SansとNoto Serifが入っているので便利です。
しかし、デフォルトのままで使うと、どういうわけかWenQuanYi Zen Heiが優先されてしまいます。
それはどうしてでしょうか?

fontconfigの設定ファイル

何故、このようになってしまうのかを理解するには、Linuxのフォントの設定を司るFontconfigを理解する必要があります。
Fontconfigの設定ファイルは、/etc/fonts/conf.availに入っていて、このファイルのシンボリックリンクを/etc/fonts/conf.dに貼る事で有効化されます。
設定ファイルには、接頭に番号が付与されていて、その番号の昇順で優先順位が決まります。

conf.availのファイルの接頭番号
番号内容
00 - 09フォントのディレクトリ
10 - 19システムのレンダリングのデフォルト設定(アンチエイリアス等)
20 - 29フォントのレンダリングオプション
30 - 39フォントファミリーの置換
40 - 49包括的な識別、family->genericのマッピング
50 - 59代替設定ファイルの読込
60 - 69包括的なエイリアス設定、generic->familyのマッピング
70 - 79フォントの選択 (どのフォントが利用可能かの調整)
80 - 89target="scan"のマッチング (スキャンされたパターンの結果についての修正)
90 - 99フォントの合成

アウトラインフォントの種類

現在、以下のフォントの種類がX Windowで利用できます。

TrueTypeフォント (TTF)
2次Bスプライン曲線で字形を制御する。ビットマップフォントを内蔵できる。
PostScriptフォント
三次ベジェ曲線で字形を制御する。
Type1フォント
1バイト言語用のフォントで、256文字まで格納できる。
OCFフォント
2バイト言語用のフォントで、Type1フォントを多数積み重ねた構造をしている。
CIDフォント
OCFフォントを改良し、CIDコードとCマップなど、2バイト言語用に簡素化した構造を採用したフォント。
OpenTypeフォント
TrueType (OpenType/TTF)とPostScript (OpenType/CFF)の2つの形式を持つ。

WenQuanYi Zen Heiが優先されて日本語フォントとして利用されてしまう理由

どうして、WenQuanYi Zen Heiが、日本語のフォントとしてデフォルトで選ばれてしまうのでしょう?
fc-matchを使って確認します。


$ fc-match --sort :lang=ja
wqy-zenhei.ttc: "WenQuanYi Zen Hei" "Medium"
LiberationSans-Regular.ttf: "Liberation Sans" "Regular"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
luxisr.ttf: "Luxi Sans" "Regular"
l048013t.pfa: "Luxi Sans" "Regular"
NimbusSans-Regular.otf: "Nimbus Sans" "Regular"
Loma.ttf: "Loma" "Regular"
Waree.ttf: "Waree" "Regular"
Umpush-Bold.ttf: "Umpush" "Bold"
Laksaman.ttf: "Laksaman" "Regular"
MuktiNarrow.ttf: "Mukti Narrow" "Regular"
padmaa-Medium-0.5.ttf: "padmaa" "regular"
padmaa.ttf: "padmaa" "Normal"
padmaa-Bold.1.1.ttf: "padmaa-Bold.1.1" "Bold.1.1"
sazanami-gothic.ttf: "さざなみゴシック" "Gothic-Regular"
lohit_bn.ttf: "Lohit Bengali" "Regular"
lohit_gu.ttf: "Lohit Gujarati" "Regular"
lohit_mr.ttf: "Lohit Marathi" "Regular"
lohit_mai.ttf: "Lohit Maithili" "Regular"
lohit_pa.ttf: "Lohit Punjabi" "Regular"
lohit_ta.ttf: "Lohit Tamil" "Regular"
Meera_04.ttf: "Meera" "Regular"
lohit_ml.ttf: "Lohit Malayalam" "Regular"
lohit_kn.ttf: "Lohit Kannada" "Regular"
lohit_te.ttf: "Lohit Telugu" "Regular"
lohit_or.ttf: "Lohit Oriya" "Regular"
sinhala_lklug.ttf: "LKLUG" "Regular"
Norasi.ttf: "Norasi" "Regular"
Purisa.ttf: "Purisa" "Regular"
Rachana_04.ttf: "Rachana" "Regular"
Sawasdee.ttf: "Sawasdee" "Regular"
Hack-Regular.ttf: "Hack" "Regular"
lohit_as.ttf: "Lohit Assamese" "Regular"
lohit_hi.ttf: "Lohit Devanagari" "Regular"
DejaVuMathTeXGyre.ttf: "DejaVu Math TeX Gyre" "Regular"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
DejaVuSerif.ttf: "DejaVu Serif" "Book"
NotoSansArmenian-Regular.ttf: "Noto Sans Armenian" "Regular"
NotoSansCJK.ttc: "Noto Sans CJK JP" "Regular"
D050000L.otf: "D050000L" "Regular"
NotoSans-Regular.ttf: "Noto Sans" "Regular"
NotoSansAdlam-Regular.ttf: "Noto Sans Adlam" "Regular"
NotoSansArabic-Regular.ttf: "Noto Sans Arabic" "Regular"
NotoSansBengali-Regular.ttf: "Noto Sans Bengali" "Regular"
NotoSansChakma-Regular.ttf: "Noto Sans Chakma" "Regular"
NotoSansDevanagari-Regular.ttf: "Noto Sans Devanagari" "Regular"
NotoSansGeorgian-Regular.ttf: "Noto Sans Georgian" "Regular"
NotoSansKhmer-Regular.ttf: "Noto Sans Khmer" "Regular"
NotoSansLao-Regular.ttf: "Noto Sans Lao" "Regular"
NotoSansMyanmar-Regular.ttf: "Noto Sans Myanmar" "Regular"
NotoSansOsage-Regular.ttf: "Noto Sans Osage" "Regular"
NotoSansSinhala-Regular.ttf: "Noto Sans Sinhala" "Regular"
NotoSansSymbols-Regular.ttf: "Noto Sans Symbols" "Regular"
NotoSansTamil-Regular.ttf: "Noto Sans Tamil" "Regular"
TibMachUni.ttf: "Tibetan Machine Uni" "Regular"
Pothana2000.ttf: "Pothana2000" "Regular"
chandas1-2.ttf: "Chandas" "Regular"
luximr.ttf: "Luxi Mono" "Regular"
NotoSansThaana-Regular.ttf: "Noto Sans Thaana" "Regular"
NotoSansOriya-Regular.ttf: "Noto Sans Oriya" "Regular"
NotoSerifKannada-Regular.ttf: "Noto Serif Kannada" "Regular"
SyrCOMAdiabene.otf: "East Syriac Adiabene" "Regular"
SyrCOMKharput.otf: "Serto Kharput" "Regular"
cour.pfa: "Courier" "Regular"
s050000l.pfb: "Standard Symbols L" "Regular"
gargi.ttf: "gargi" "Medium"
Samyak-Devanagari.ttf: "Samyak Devanagari" "Regular"
Samyak-Oriya.ttf: "Samyak Oriya" "Regular"
wqy-zenhei.ttc: "WenQuanYi Zen Hei Mono" "Medium"
GohaTibebZemen.otf: "Goha-Tibeb Zemen" "Regular"
Rekha.ttf: "Rekha" "Medium"
utkal.ttf: "ori1Uni" "Medium"
DejaVuSansMono-Bold.ttf: "DejaVu Sans Mono" "Bold"
DejaVuSerif-Bold.ttf: "DejaVu Serif" "Bold"
DejaVuSerif-Italic.ttf: "DejaVu Serif" "Italic"
LiberationSerif-Italic.ttf: "Liberation Serif" "Italic"
ter-u12n.otb: "Terminus" "Regular"
7x13-ISO8859-1.pcf.gz: "Fixed" "Regular"
7x13.pcf.gz: "Fixed" "Regular"
8x13.pcf.gz: "Fixed" "Regular"
ter-112n.pcf.gz: "Terminus" "Regular"
12x13ja.pcf.gz: "Fixed" "ja"
6x12.pcf.gz: "Fixed" "SemiCondensed"
6x13.pcf.gz: "Fixed" "SemiCondensed"
9x15.pcf.gz: "Fixed" "Regular"
cu-alt12.pcf.gz: "ClearlyU Alternate Glyphs" "Regular"
cu-pua12.pcf.gz: "ClearlyU PUA" "Regular"
cu12.pcf.gz: "ClearlyU" "Regular"

この順番は、/etc/fonts/conf.d/65-nonlatin.confで指定されたフォントの優先順位に基づいています。


<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
  <its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
    <its:translateRule translate="no" selector="/fontconfig/*[not(self::description)]"/>
  </its:rules>

  <description>Set preferable fonts for non-Latin</description>
        <alias>
                <family>serif</family>
                <prefer>
                        <family>Artsounk</family> <!-- armenian -->
                        <family>BPG UTF8 M</family> <!-- georgian -->
                        <family>Kinnari</family> <!-- thai -->
                        <family>Norasi</family> <!-- thai -->
                        <family>Frank Ruehl</family> <!-- hebrew -->
                        <family>Dror</family>  <!-- hebrew -->
                        <family>JG LaoTimes</family>  <!-- lao -->
                        <family>Saysettha Unicode</family>  <!-- lao -->
                        <family>Pigiarniq</family> <!-- canadian syllabics -->
                        <family>B Davat</family> <!-- arabic (fa) -->
                        <family>B Compset</family>  <!-- arabic (fa) -->
                        <family>Kacst-Qr</family> <!-- arabic (ar) -->
                        <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
                        <family>Raghindi</family> <!-- devanagari -->
                        <family>Mukti Narrow</family> <!-- bengali -->
                        <family>malayalam</family> <!-- malayalam -->
                        <family>Sampige</family> <!-- kannada -->
                        <family>padmaa</family> <!-- gujarati -->
                        <family>Hapax Berbère</family> <!-- tifinagh -->
                        <family>MS Mincho</family> <!-- han (ja) -->
                        <family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
                        <family>PMingLiu</family> <!-- han (zh-tw) -->
                        <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
                        <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
                        <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
                        <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
                        <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
                        <family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
                        <family>MgOpen Canonica</family>
                        <family>Sazanami Mincho</family>
                        <family>IPAMonaMincho</family>
                        <family>IPAMincho</family>
                        <family>Kochi Mincho</family>
                        <family>AR PL SungtiL GB</family>
                        <family>AR PL Mingti2L Big5</family>
                        <family>AR PL Zenkai Uni</family>
                        <family>MS 明朝</family>
                        <family>ZYSong18030</family>
                        <family>NanumMyeongjo</family> <!-- hangul (ko) -->
                        <family>UnBatang</family> <!-- hangul (ko) -->
                        <family>Baekmuk Batang</family> <!-- hangul (ko) -->
                        <family>KacstQura</family>
                        <family>Frank Ruehl CLM</family>
                        <family>Lohit Bengali</family>
                        <family>Lohit Gujarati</family>
                        <family>Lohit Hindi</family>
                        <family>Lohit Marathi</family>
                        <family>Lohit Maithili</family>
                        <family>Lohit Kashmiri</family>
                        <family>Lohit Konkani</family>
                        <family>Lohit Nepali</family>
                        <family>Lohit Sindhi</family>
                        <family>Lohit Punjabi</family>
                        <family>Lohit Tamil</family>
                        <family>Rachana</family>
                        <family>Lohit Malayalam</family>
                        <family>Lohit Kannada</family>
                        <family>Lohit Telugu</family>
                        <family>Lohit Oriya</family>
                        <family>LKLUG</family>
                </prefer>
        </alias>
        <alias>
                <family>sans-serif</family>
                <prefer>
                        <family>Nachlieli</family> <!-- hebrew -->
                        <family>Lucida Sans Unicode</family>
                        <family>Yudit Unicode</family>
                        <family>Kerkis</family> <!-- greek -->
                        <family>ArmNet Helvetica</family> <!-- armenian -->
                        <family>Artsounk</family> <!-- armenian -->
                        <family>BPG UTF8 M</family> <!-- georgian -->
                        <family>Waree</family> <!-- thai -->
                        <family>Loma</family> <!-- thai -->
                        <family>Garuda</family> <!-- thai -->
                        <family>Umpush</family> <!-- thai -->
                        <family>Saysettha Unicode</family> <!-- lao? -->
                        <family>JG Lao Old Arial</family> <!-- lao -->
                        <family>GF Zemen Unicode</family> <!-- ethiopic -->
                        <family>Pigiarniq</family> <!-- canadian syllabics -->
                        <family>B Davat</family> <!-- arabic (fa) -->
                        <family>B Compset</family> <!-- arabic (fa) -->
                        <family>Kacst-Qr</family> <!-- arabic (ar) -->
                        <family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
                        <family>Raghindi</family> <!-- devanagari -->
                        <family>Mukti Narrow</family> <!-- bengali -->
                        <family>malayalam</family> <!-- malayalam -->
                        <family>Sampige</family> <!-- kannada -->
                        <family>padmaa</family> <!-- gujarati -->
                        <family>Hapax Berbère</family> <!-- tifinagh -->
                        <family>MS Gothic</family> <!-- han (ja) -->
                        <family>UmePlus P Gothic</family> <!-- han (ja) -->
                        <family>Microsoft YaHei</family> <!-- han (zh-cn,zh-tw) -->
                        <family>Microsoft JhengHei</family> <!-- han (zh-tw) -->
                        <family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
                        <family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
                        <family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
                        <family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
                        <family>MgOpen Modata</family>
                        <family>VL Gothic</family>
                        <family>IPAMonaGothic</family>
                        <family>IPAGothic</family>
                        <family>Sazanami Gothic</family>
                        <family>Kochi Gothic</family>
                        <family>AR PL KaitiM GB</family>
                        <family>AR PL KaitiM Big5</family>
                        <family>AR PL ShanHeiSun Uni</family>
                        <family>AR PL SungtiL GB</family>
                        <family>AR PL Mingti2L Big5</family>
                        <family>MS ゴシック</family>
                        <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
                        <family>TSCu_Paranar</family> <!-- tamil -->
                        <family>NanumGothic</family> <!-- hangul (ko) -->
                        <family>UnDotum</family> <!-- hangul (ko) -->
                        <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
                        <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
                        <family>KacstQura</family>
                        <family>Lohit Bengali</family>
                        <family>Lohit Gujarati</family>
                        <family>Lohit Hindi</family>
                        <family>Lohit Marathi</family>
                        <family>Lohit Maithili</family>
                        <family>Lohit Kashmiri</family>
                        <family>Lohit Konkani</family>
                        <family>Lohit Nepali</family>
                        <family>Lohit Sindhi</family>
                        <family>Lohit Punjabi</family>
                        <family>Lohit Tamil</family>
                        <family>Meera</family>
                        <family>Lohit Malayalam</family>
                        <family>Lohit Kannada</family>
                        <family>Lohit Telugu</family>
                        <family>Lohit Oriya</family>
                        <family>LKLUG</family>
                </prefer>
        </alias>
        <alias>
                <family>monospace</family>
                <prefer>
                        <family>Miriam Mono</family> <!-- hebrew -->
                        <family>VL Gothic</family>
                        <family>IPAMonaGothic</family>
                        <family>IPAGothic</family>
                        <family>Sazanami Gothic</family>
                        <family>Kochi Gothic</family>
                        <family>AR PL KaitiM GB</family>
                        <family>MS Gothic</family> <!-- han (ja) -->
                        <family>UmePlus Gothic</family> <!-- han (ja) -->
                        <family>NSimSun</family> <!-- han (zh-cn,zh-tw) -->
                        <family>MingLiu</family> <!-- han (zh-tw) -->
                        <family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
                        <family>AR PL New Sung Mono</family> <!-- han (zh-cn,zh-tw) -->
                        <family>HanyiSong</family> <!-- han (zh-cn) -->
                        <family>AR PL SungtiL GB</family>
                        <family>AR PL Mingti2L Big5</family>
                        <family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
                        <family>NanumGothicCoding</family> <!-- hangul (ko) -->
                        <family>NanumGothic</family> <!-- hangul (ko) -->
                        <family>UnDotum</family> <!-- hangul (ko) -->
                        <family>Baekmuk Dotum</family> <!-- hangul (ko) -->
                        <family>Baekmuk Gulim</family> <!-- hangul (ko) -->
                        <family>TlwgTypo</family> <!-- thai -->
                        <family>TlwgTypist</family> <!-- thai -->
                        <family>TlwgTypewriter</family> <!-- thai -->
                        <family>TlwgMono</family> <!-- thai -->
                        <family>Hasida</family> <!-- hebrew -->
                        <family>GF Zemen Unicode</family> <!-- ethiopic -->
                        <family>Hapax Berbère</family> <!-- tifinagh -->
                        <family>Lohit Bengali</family>
                        <family>Lohit Gujarati</family>
                        <family>Lohit Hindi</family>
                        <family>Lohit Marathi</family>
                        <family>Lohit Maithili</family>
                        <family>Lohit Kashmiri</family>
                        <family>Lohit Konkani</family>
                        <family>Lohit Nepali</family>
                        <family>Lohit Sindhi</family>
                        <family>Lohit Punjabi</family>
                        <family>Lohit Tamil</family>
                        <family>Meera</family>
                        <family>Lohit Malayalam</family>
                        <family>Lohit Kannada</family>
                        <family>Lohit Telugu</family>
                        <family>Lohit Oriya</family>
                        <family>LKLUG</family>
                </prefer>
        </alias>
<!--
  system-ui
-->
        <alias>
                <family>system-ui</family>
                <prefer>
                        <family>Noto Sans Arabic UI</family><!-- ar -->
                        <family>Noto Sans Bengali UI</family><!-- bn -->
                        <family>Noto Sans Devanagari UI</family><!-- hi, mai, mr -->
                        <family>Noto Sans Gujarati UI</family><!-- gu -->
                        <family>Noto Sans Gurmukhi UI</family><!-- pa -->
                        <family>Noto Sans Kannada UI</family><!-- kn -->
                        <family>Noto Sans Khmer UI</family><!-- km -->
                        <family>Noto Sans Lao UI</family><!-- lo -->
                        <family>Noto Sans Malayalam UI</family><!-- ml -->
                        <family>Noto Sans Myanmar UI</family><!-- my -->
                        <family>Noto Sans Oriya UI</family><!-- or -->
                        <family>Noto Sans Sinhala UI</family><!-- si -->
                        <family>Noto Sans Tamil UI</family><!-- ta -->
                        <family>Noto Sans Telugu UI</family><!-- te -->
                        <family>Noto Sans Thai UI</family><!-- th -->
                        <family>Leelawadee UI</family><!-- bug, th, jv, km, lo -->
                        <family>Nirmala UI</family><!-- Indic -->
                        <family>Yu Gothic UI</family><!-- han (ja) -->
                        <family>Meiryo UI</family><!-- han (ja) -->
                        <family>MS UI Gothic</family><!-- han (ja) -->
                        <family>Khmer UI</family><!-- km -->
                        <family>Lao UI</family><!-- lo -->
                        <family>Microsoft YaHei UI</family><!-- han (zh-cn) -->
                        <family>Microsoft JhengHei UI</family><!-- han (zh-tw) -->
                </prefer>
        </alias>

</fontconfig>

このリストでWenQuanYi Zen Heiが上位にあったとしても、日本語フォントとして他の日本語フォントより優先されてしまうのは奇妙です。
その理由は、fc-matchをデバッグモードで実行すると判明します。


$ FC_DEBUG=1 fc-match serif:lang=ja
FC_DEBUG=1
Match Pattern has 24 elts (size 32)
        family: "Bitstream Vera Serif"(w) "DejaVu Serif"(w) "DejaVu Serif"(w) "Liberation Serif"(w) "Thorndale AMT"(w) "Luxi Serif"(w) "Nimbus Roman No9 L"(w) "Nimbus Roman"(w) "Times"(w) "DejaVu Serif"(w) "Kinnari"(w) "Norasi"(w) "Artsounk"(w) "BPG UTF8 M"(w) "Kinnari"(w) "Norasi"(w) "Frank Ruehl"(w) "Dror"(w) "JG LaoTimes"(w) "Saysettha Unicode"(w) "Pigiarniq"(w) "B Davat"(w) "B Compset"(w) "Kacst-Qr"(w) "Urdu Nastaliq Unicode"(w) "Raghindi"(w) "Mukti Narrow"(w) "malayalam"(w) "Sampige"(w) "padmaa"(w) "Hapax Berbère"(w) "MS Mincho"(w) "SimSun"(w) "PMingLiu"(w) "WenQuanYi Zen Hei"(w) "WenQuanYi Bitmap Song"(w) "AR PL ShanHeiSun Uni"(w) "AR PL New Sung"(w) "ZYSong18030"(w) "HanyiSong"(w) "MgOpen Canonica"(w) "Sazanami Mincho"(w) "IPAMonaMincho"(w) "IPAMincho"(w) "Kochi Mincho"(w) "AR PL SungtiL GB"(w) "AR PL Mingti2L Big5"(w) "AR PL Zenkai Uni"(w) "MS 明朝"(w) "ZYSong18030"(w) "NanumMyeongjo"(w) "UnBatang"(w) "Baekmuk Batang"(w) "KacstQura"(w) "Frank Ruehl CLM"(w) "Lohit Bengali"(w) "Lohit Gujarati"(w) "Lohit Hindi"(w) "Lohit Marathi"(w) "Lohit Maithili"(w) "Lohit Kashmiri"(w) "Lohit Konkani"(w) "Lohit Nepali"(w) "Lohit Sindhi"(w) "Lohit Punjabi"(w) "Lohit Tamil"(w) "Rachana"(w) "Lohit Malayalam"(w) "Lohit Kannada"(w) "Lohit Telugu"(w) "Lohit Oriya"(w) "LKLUG"(w) "FreeSerif"(w) "Code2000"(w) "Code2001"(w) "Rachana"(w) "serif"(s) "Nazli"(w) "Lotoos"(w) "Mitra"(w) "Ferdosi"(w) "Badr"(w) "Zar"(w) "serif"(w)
        familylang: "ja"(s) "en-us"(w)
        stylelang: "ja"(s) "en-us"(w)
        fullnamelang: "ja"(s) "en-us"(w)
        slant: 0(i)(s)
        weight: 80(i)(s)
        width: 100(i)(s)
        size: 12(f)(s)
        pixelsize: 12.5(f)(s)
        hintstyle: 1(i)(w)
        hinting: True(s)
        verticallayout: False(s)
        autohint: False(s)
        globaladvance: True(s)
        dpi: 75(f)(s)
        scale: 1(f)(s)
        lang: ja(s)
        fontversion: 2147483647(i)(s)
        embeddedbitmap: True(s)
        decorative: False(s)
        namelang: "ja"(s)
        prgname: "fc-match"(s)
        symbol: False(s)
        variable: False(s)

Best score 0 0 0 0 0 0 0 1076 0 0 34 0 0 0 0 0 0 0 20000 0 0 0 0 0 2.14743e+12
Pattern has 25 elts (size 25)
        family: "WenQuanYi Zen Hei"(w) "文泉驛正黑"(w) "文泉驿正黑"(w)
        familylang: "en"(w) "zh-tw"(w) "zh-cn"(w)
        style: "Medium"(w) "中等"(w)
        stylelang: "en"(w) "zh-tw"(w)
        fullname: "WenQuanYi Zen Hei"(w) "文泉驛正黑"(w) "文泉驿正黑"(w)
        fullnamelang: "en"(w) "zh-tw"(w) "zh-cn"(w)
        slant: 0(i)(w)
        weight: 100(f)(w)
        width: 100(f)(w)
        foundry: "WenQ"(w)
        file: "/usr/share/fonts/TTF/wqy-zenhei.ttc"(w)
        index: 0(i)(w)
        outline: True(w)
        scalable: True(w)
<省略>
        lang: aa|af|av|ay|be|bg|bi|br|ca|ce|ch|co|da|de|el|en|es|eu|fj|fo|fr|fur|fy|gd|gl|gv|ho|ia|id|ie|ik|io|is|it|ja|ko|kum|lb|lez|mg|nb|nds|nl|nn|no|nr|ny|oc|om|os|pt|rm|ru|sel|sm|sma|smj|so|sq|sr|ss|st|sv|sw|tl|to|ts|uz|vo|wa|wo|xh|yap|zh-cn|zh-sg|zh-tw|zu|an|fil|ht|jv|kj|kwm|lg|li|ms|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za(w)
        fontversion: 52428(i)(w)
        capability: "otlayout:DFLT"(w)
        fontformat: "TrueType"(w)
        decorative: False(w)
        postscriptname: "WenQuanYiZenHei"(w)
        color: False(w)
        symbol: False(w)
        variable: False(w)
        fonthashint: False(w)

なんと、WenQuanYi Zen Heiのlangの箇所にjaが入っています。
だから、リストの上位にあるWenQuanYi Zen Heiが、日本語(ja)対応フォントとして優先して選ばれてしまうのです。

他のディストリビューションでは、69-language-selector-ja.confとして、包括的にフォントのマッピング自体を上書きしています。
Slackwareは、便利なパッケージ管理機能があるので、それを利用して、wqy-zenhei.ttcが日本語用のフォントとして選択されないようにします。

WenQuanYi Zen Heiのパッケージの削除


$ cd /var/log/packages
$ sudo removepkg wqy-zenhei-font-ttf
Removing files:
  --> Deleting symlink /etc/fonts/conf.d/64-wqy-zenhei.conf
  --> Deleting /etc/fonts/conf.avail/44-wqy-zenhei-upstream-orig.conf
  --> Deleting /etc/fonts/conf.avail/64-wqy-zenhei.conf
  --> Deleting /etc/fonts/conf.avail/66-wqy-zenhei-sharp-no13px.conf
  --> Deleting /etc/fonts/conf.avail/66-wqy-zenhei-sharp.conf
  --> Deleting /usr/doc/wqy-zenhei-font-ttf-0.8.38/AUTHORS
  --> Deleting /usr/doc/wqy-zenhei-font-ttf-0.8.38/COPYING
  --> Deleting /usr/doc/wqy-zenhei-font-ttf-0.8.38/ChangeLog
  --> Deleting /usr/doc/wqy-zenhei-font-ttf-0.8.38/INSTALL
  --> Deleting /usr/doc/wqy-zenhei-font-ttf-0.8.38/README
  --> Deleting /usr/sbin/zenheiset
  --> Deleting /usr/share/fonts/TTF/wqy-zenhei.ttc
  --> Deleting empty directory /usr/doc/wqy-zenhei-font-ttf-0.8.38/

WenQuanYi Zen Heiが無くなると、順位としては、さざなみゴシックやさざなみ明朝が日本語のデフォルトフォントに選ばれます。
Notoに比べると見劣りするので、デフォルトで選ばれるのは嫌だし、使わないという事なら、パッケージを削除します。


$ sudo removepkg sazanami-fonts-ttf
Removing package: sazanami-fonts-ttf-20040629-noarch-4
Removing files:
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/README
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/ayu/README.txt
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/kappa/README
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/misaki/misakib8.txt
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/mplus/LICENSE_J
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/oradano/README.txt
  --> Deleting /usr/doc/sazanami-fonts-ttf-20040629/shinonome/LICENSE
  --> Deleting /usr/share/fonts/TTF/sazanami-gothic.ttf
  --> Deleting /usr/share/fonts/TTF/sazanami-mincho.ttf
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/shinonome/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/oradano/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/mplus/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/misaki/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/kappa/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/ayu/
  --> Deleting empty directory /usr/doc/sazanami-fonts-ttf-20040629/

フォントのキャッシュを再生成します。


$ fc-cache -r

日本語で、Notoが選ばれる事を確認します。


$ fc-match serif:lang=ja
NotoSansCJK.ttc: "Noto Sans CJK JP" "Regular"
$ fc-match sans:lang=ja
NotoSansCJK.ttc: "Noto Sans CJK JP" "Regular"
$ fc-match monospace:lang=ja
NotoSansCJK.ttc: "Noto Sans CJK JP" "Regular"

/etc/slackpkg/blacklistに記載

WenQuanYi Zen Hei、さざなみゴシック・明朝のパッケージが、slackpkgのupgrade-allをしても、インストールされないように、blacklistに入れます。


$ sudo vi /etc/slackpkg/blacklist

ファイルの一番下に、wqy-zenhei-font-ttfとsazanami-fonts-ttfを記載しておきましょう。


# This is a blacklist file. Any packages listed here won't be
# upgraded, removed, or installed by slackpkg.
#
# The correct syntax is:
#
# To blacklist the package xorg-server-1.19.4-x86_64-1 the line will be:
# xorg-server
#
# DON'T put any space(s) before or after the package name or regexp.
# If you do this, the blacklist will NOT work.

#
# Automated upgrade of kernel packages aren't a good idea (and you need to
# run "lilo" after upgrade). If you think the same, uncomment the lines
# below
#
#kernel-generic
#kernel-generic-smp
#kernel-huge
#kernel-huge-smp
#kernel-modules
#kernel-modules-smp
#kernel-source

#
# aaa_elflibs should NOT be blacklisted!
#

# You can blacklist using regular expressions.
#
# Don't use *full* regex here, because all of the following
# will be checked for the regex: series, name, version, arch,
# build and fullname.
#
# This one will blacklist all SBo packages:
#[0-9]+_SBo
#
wqy-zenhei-font-ttf
sazanami-fonts-ttf

これでKDEのシステム設定等でフォントをNotoに手動で設定しなくても、X Windowを立ち上げれば、自動でNotoが選択されています。
また、Webブラウザで閲覧する際に、WenQuanYi Zen Heiが表示されることは無くなります。

細かなフォントの設定については、KDEシステム設定のフォントの項目で設定したり、アプリケーション毎のフォントの設定で調整して下さい。

KDEシステム設定でのフォントの設定画面

フォントのDPI指定

お使いのディスプレイに最適なフォントのDPIについては、以下のサイトを利用して計算して設定されると良いです。