Font Configuration/Chinese

From ArchWiki

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Article consists mainly of config dumps. (Discuss in Talk:Font Configuration/Chinese)

For configurations to be applied globally, edit /etc/fonts/local.conf. For user configurations, edit $XDG_CONFIG_HOME/fontconfig/fonts.conf.

Configurations for Android display effect of fonts

Installation

Install ttf-roboto noto-fonts noto-fonts-cjk adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts ttf-dejavu.

Add configuration files

~/.config/fontconfig/fonts.conf
or
/etc/fonts/local.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "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>Android Font Config</description>

  <!-- Font directory list -->

  <dir>/usr/share/fonts</dir>
  <dir>/usr/local/share/fonts</dir>
  <dir prefix="xdg">fonts</dir>
  <!-- the following element will be removed in the future -->
  <dir>~/.fonts</dir>

  <!-- Disable embedded bitmap fonts -->
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>

  <!-- English uses Roboto and Noto Serif by default, terminals use DejaVu Sans Mono. -->
  <match>
    <test qual="any" name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Roboto</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>DejaVu Sans Mono</string>
    </edit>
  </match>

  <!-- Chinese uses Source Han Sans and Source Han Serif by default, not Noto Sans CJK SC, since it will show Japanese Kanji in some cases. -->
  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <test name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend">
      <string>Source Han Serif CN</string>
    </edit>
  </match>
  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <test name="family">
      <string>sans-serif</string>
    </test>
    <edit name="family" mode="prepend">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend">
      <string>Noto Sans Mono CJK SC</string>
    </edit>
  </match>

  <!-- Windows & Linux Chinese fonts. -->
  <!-- Map all the common fonts onto Source Han Sans/Serif, so that they will be used when Source Han Sans/Serif are not installed. This solves a situation where some programs asked for a font, and under the non-existance of the font, it will not use the fallback font, which caused abnormal display of Chinese characters. -->
  <match target="pattern">
    <test qual="any" name="family">
      <string>WenQuanYi Zen Hei</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>WenQuanYi Micro Hei</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>WenQuanYi Micro Hei Light</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>Microsoft YaHei</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>SimHei</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Sans CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>SimSun</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Serif CN</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family">
      <string>SimSun-18030</string>
    </test>
    <edit name="family" mode="assign" binding="same">
      <string>Source Han Serif CN</string>
    </edit>
  </match>

  <!-- Load local system customization file -->
  <include ignore_missing="yes">conf.d</include>

  <!-- Font cache directory list -->

  <cachedir>/var/cache/fontconfig</cachedir>
  <cachedir prefix="xdg">fontconfig</cachedir>
  <!-- the following element will be removed in the future -->
  <cachedir>~/.fontconfig</cachedir>

  <config>
    <!-- Rescan configurations every 30 seconds when FcFontSetList is called -->
    <rescan>
      <int>30</int>
    </rescan>
  </config>
</fontconfig>

Configurations for Windows display effect of font

Install ttf-ms-fontsAUR.

Add configuration files

<match target="font">
  <edit name="autohint">
    <bool>false</bool>
  </edit>
  <edit name="hinting">
    <bool>true</bool>
  </edit>
  <edit name="antialias">
    <bool>true</bool>
  </edit>
</match>


<match target="font">
  <test name="weight" compare="less_eq">
    <const>medium</const>
  </test>
  <test target="pattern" name="weight" compare="more">
    <const>medium</const>
  </test>
  <edit name="embolden" mode="assign">
    <bool>true</bool>
  </edit>
  <edit name="weight" mode="assign">
    <const>bold</const>
  </edit>
</match>

<match target="font">
  <test target="pattern" name="lang" compare="contains">
    <string>zh</string>
    <string>ja</string>
    <string>ko</string>
  </test>
  <edit name="spacing">
    <const>proportional</const>
  </edit>
  <edit name="globaladvance">
    <bool>false</bool>
  </edit>
</match>

<match target="pattern">
  <test name="family">
    <string>SimSun</string>
    <string>SimSun-18030</string>
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>MingLiU</string>
    <string>PMingLiU</string>
  </test>
  <edit binding="strong" mode="prepend" name="family">
    <string>Tahoma</string>
    <string>Arial</string>
    <string>Verdana</string>
    <string>DejaVu Sans</string>
    <string>Bitstream Vera Sans</string>
  </edit>
</match>

<match target="font">
  <test name="family" qual="any">
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>SimSun</string>
    <string>NSimSun</string>
    <string>MingLiu</string>
    <string>PMingLiu</string>
  </test>
  <test name="pixelsize" compare="less_eq">
    <double>12</double>
  </test>
  <edit name="pixelsize" mode="assign">
    <double>12</double>
  </edit>
</match>

<match target="font">
  <test compare="eq" name="family" qual="any">
    <string>宋体</string>
    <string>新宋体</string>
    <string>SimSun</string>
    <string>NSimSun</string>
    <string>宋体-18030</string>
    <string>新宋体-18030</string>
    <string>SimSun-18030</string>
    <string>NSimSun-18030</string>
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>MingLiU</string>
    <string>PMingLiU</string>
  </test>
  <test compare="less_eq" name="pixelsize">
    <double>16</double>
  </test>
  <edit mode="assign" name="hinting">
    <bool>true</bool>
  </edit>
  <edit mode="assign" name="autohint">
    <bool>false</bool>
  </edit>
  <edit name="antialias">
    <bool>false</bool>
  </edit>
  <edit mode="assign" name="hintstyle">
    <const>hintslight</const>
  </edit>
</match>

<match target="font">
  <test name="family">
    <string>Andale Mono</string>
    <string>Arial</string>
    <string>Comic Sans MS</string>
    <string>Georgia</string>
    <string>Impact</string>
    <string>Trebuchet MS</string>
    <string>Verdana</string>
    <string>Courier New</string>
    <string>Times New Roman</string>
    <string>Tahoma</string>
    <string>Webdings</string>
    <string>Albany AMT</string>
    <string>Thorndale AMT</string>
    <string>Cumberland AMT</string>
    <string>Andale Sans</string>
    <string>Andy MT</string>
    <string>Bell MT</string>
    <string>Monotype Sorts</string>
  </test>
  <test name="pixelsize" compare="less_eq">
    <double>16</double>
  </test>
  <edit name="autohint">
    <bool>false</bool>
  </edit>
  <edit name="antialias">
    <bool>false</bool>
  </edit>
</match>

<alias>
  <family>serif</family>
  <prefer>
    <family>Times New Roman</family>
    <family>Thorndale AMT</family>
    <family>Nimbus Roman No9 L</family>
    <family>DejaVu Serif</family>
    <family>Bitstream Vera Serif</family>
    <family>Luxi Serif</family>
    <family>Likhan</family>
    <family>FreeSerif</family>
    <family>Times</family>
    <family>SimSun</family>
    <family>SimSun-18030</family>
    <family>MingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Mincho</family>
    <family>UnBatang</family>
    <family>Baekmuk Batang</family>
    <family>HanyiSong</family>
    <family>ZYSong18030</family>
  </prefer>
</alias>
<alias>
  <family>sans-serif</family>
  <prefer>
    <family>Arial</family>
    <family>Albany AMT</family>
    <family>Nimbus Sans L</family>
    <family>Verdana</family>
    <family>DejaVu Sans</family>
    <family>Bitstream Vera Sans</family>
    <family>Luxi Sans</family>
    <family>FreeSans</family>
    <family>Helvetica</family>
    <family>SimSun</family>
    <family>SimSun-18030</family>
    <family>MingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Gothic</family>
    <family>UnDotum</family>
    <family>Baekmuk Gulim</family>
    <family>Baekmuk Dotum</family>
  </prefer>
</alias>
<alias>
  <family>monospace</family>
  <prefer>
    <family>Courier New</family>
    <family>Cumberland AMT</family>
    <family>Nimbus Mono L</family>
    <family>Andale Mono</family>
    <family>DejaVu Sans Mono</family>
    <family>Bitstream Vera Sans Mono</family>
    <family>Luxi Mono</family>
    <family>FreeMono</family>
    <family>NSimSun</family>
    <family>NSimSun-18030</family>
    <family>PMingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Gothic</family>
    <family>UnDotum</family>
    <family>Baekmuk Gulim</family>
    <family>Baekmuk Dotum</family>
    <family>HanyiSong</family>
    <family>ZYSong18030</family>
  </prefer>
</alias>

Configurations for fonts with Anti-aliasing effect

<match target="font">
  <edit name="autohint">
    <bool>true</bool>
  </edit>
  <edit name="hintstyle">
    <const>hintfull</const>
  </edit>
  <edit name="antialias">
    <bool>true</bool>
  </edit>
</match>

<match target="font">
  <test name="weight" compare="less_eq">
    <const>medium</const>
  </test>
  <test target="pattern" name="weight" compare="more">
    <const>medium</const>
  </test>
  <edit name="embolden" mode="assign">
    <bool>true</bool>
  </edit>
  <edit name="weight" mode="assign">
    <const>bold</const>
  </edit>
</match>

<match target="font">
  <test target="pattern" name="lang" compare="contains">
    <string>zh</string>
    <string>ja</string>
    <string>ko</string>
  </test>
  <edit name="spacing">
    <const>proportional</const>
  </edit>
  <edit name="globaladvance">
    <bool>false</bool>
  </edit>
</match>

<match target="pattern">
  <test name="family">
    <string>SimSun</string>
    <string>SimSun-18030</string>
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>MingLiU</string>
    <string>PMingLiU</string>
  </test>
  <edit binding="strong" mode="prepend" name="family">
    <string>Tahoma</string>
    <string>Arial</string>
    <string>Verdana</string>
    <string>DejaVu Sans</string>
    <string>Bitstream Vera Sans</string>
  </edit>
</match>

<match target="font">
  <test name="family" qual="any">
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>SimSun</string>
    <string>NSimSun</string>
    <string>MingLiu</string>
    <string>PMingLiu</string>
  </test>
  <test name="pixelsize" compare="less_eq">
    <double>12</double>
  </test>
  <edit name="pixelsize" mode="assign">
    <double>12</double>
  </edit>
</match>

<match target="font">
  <test compare="eq" name="family" qual="any">
    <string>宋体</string>
    <string>新宋体</string>
    <string>SimSun</string>
    <string>NSimSun</string>
    <string>宋体-18030</string>
    <string>新宋体-18030</string>
    <string>SimSun-18030</string>
    <string>NSimSun-18030</string>
    <string>AR PL ShanHeiSun Uni</string>
    <string>AR PL New Sung</string>
    <string>MingLiU</string>
    <string>PMingLiU</string>
  </test>
  <test compare="less_eq" name="pixelsize">
    <double>16</double>
  </test>
  <edit mode="assign" name="hinting">
    <bool>true</bool>
  </edit>
  <edit mode="assign" name="autohint">
    <bool>false</bool>
  </edit>
  <edit name="antialias">
    <bool>false</bool>
  </edit>
  <edit mode="assign" name="hintstyle">
    <const>hintslight</const>
  </edit>
</match>

<alias>
  <family>serif</family>
  <prefer>
    <family>Nimbus Roman No9 L</family>
    <family>Thorndale AMT</family>
    <family>DejaVu Serif</family>
    <family>Bitstream Vera Serif</family>
    <family>Times New Roman</family>
    <family>Luxi Serif</family>
    <family>Likhan</family>
    <family>FreeSerif</family>
    <family>Times</family>
    <family>SimSun</family>
    <family>SimSun-18030</family>
    <family>MingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Mincho</family>
    <family>UnBatang</family>
    <family>Baekmuk Batang</family>
    <family>HanyiSong</family>
    <family>ZYSong18030</family>
  </prefer>
</alias>
<alias>
  <family>sans-serif</family>
  <prefer>
    <family>DejaVu Sans</family>
    <family>Bitstream Vera Sans</family>
    <family>Luxi Sans</family>
    <family>Arial</family>
    <family>Verdana</family>
    <family>Albany AMT</family>
    <family>Nimbus Sans L</family>
    <family>FreeSans</family>
    <family>Helvetica</family>
    <family>SimSun</family>
    <family>SimSun-18030</family>
    <family>MingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Gothic</family>
    <family>UnDotum</family>
    <family>Baekmuk Gulim</family>
    <family>Baekmuk Dotum</family>
  </prefer>
</alias>
<alias>
  <family>monospace</family>
  <prefer>
    <family>DejaVu Sans Mono</family>
    <family>Bitstream Vera Sans Mono</family>
    <family>Luxi Mono</family>
    <family>Courier New</family>
    <family>Cumberland AMT</family>
    <family>Nimbus Mono L</family>
    <family>Andale Mono</family>
    <family>FreeMono</family>
    <family>NSimSun</family>
    <family>NSimSun-18030</family>
    <family>PMingLiU</family>
    <family>WenQuanYi Bitmap Song</family>
    <family>AR PL ShanHeiSun Uni</family>
    <family>AR PL New Sung</family>
    <family>FZSongTi</family>
    <family>FZMingTiB</family>
    <family>AR PL SungtiL GB</family>
    <family>AR PL Mingti2L Big5</family>
    <family>Kochi Gothic</family>
    <family>UnDotum</family>
    <family>Baekmuk Gulim</family>
    <family>Baekmuk Dotum</family>
    <family>HanyiSong</family>
    <family>ZYSong18030</family>
  </prefer>
</alias>