The easiest way to set preferred Chinese fonts in Linux
is through <prefer>
in the font configuration file
~/.config/fontconfig/fonts.conf
.
Suppose your preferred English and Chinese fonts are E and C.
For each family (serif, sans-serif, monospace)
simply use a <prefer>
element containing E first
(so that English does not get rendered in C)
and C second.
Whenever the system encounters a Chinese character
(for which E has no glyph),
it will immediately fall back onto C as desired:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Serif -->
<alias>
<family>serif</family>
<prefer>
<family>DejaVu Serif</family>
<family>Noto Serif CJK TC</family>
</prefer>
</alias>
<!-- Sans-serif -->
<alias>
<family>sans-serif</family>
<prefer>
<family>DejaVu Sans</family>
<family>Noto Sans CJK TC</family>
</prefer>
</alias>
<!-- Monospace -->
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>Noto Sans CJK TC</family>
</prefer>
</alias>
</fontconfig>