Font configuration/Chinese

From ArchWiki

This article or section needs language, wiki syntax or style improvements. See Help:Style for reference.

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>

Disable Chinese italics

To add the "italic" attribute to a Chinese font, the font's "italic" will no longer be inclined (be sure to replace the name of the Chinese font you are using). After making this configuration change, you need to execute fc-cache -f.

<match target="scan">
  <test qual="any" name="family">
    <string>Noto Sans CJK SC</string>
  </test>
  <edit name="slant" binding="same" mode="append">
    <const>Italic</const>
  </edit>
</match>