Ubuntu 16.04 中默认中文字体从文泉驿换为了 Noto Sans CJK,但在英文的系统环境下的汉字显示不正确,部分汉字被显示为日文汉字形式。若将 LC_CTYPE
修改为 zh_CN.UTF-8
,会导致系统英文字体也回退到中文配置的英文字体下。
Ubuntu 中字体文件夹位置可以在 /etc/font/fonts.conf
中找到,自定义新增字体可以保存在这些地方:
1 2 3 4 5 6 7 <dir > /usr/share/fonts</dir > <dir > /usr/local/share/fonts</dir > <dir prefix ="xdg" > fonts</dir > <dir > ~/.fonts</dir >
上述后两者指的是用户目录下的字体文件夹所在, xdg
前缀一般指的是 /home/u/.config
。
通过对 $XDG_CONFIG_HOME/fontconfig/fonts.conf
的修改可以完成对某个用户的配置, 而对 /etc/fonts/local.conf
的修改则可以完成对每一位用户的配置。如果用户的单独配置和全局配置不同,系统优先使用前者。这些文件共用相同的语法。
Note:配置文件和目录: ~/.fonts.conf
, ~/.fonts.conf.d
和 ~/.fontconfig/*.cache-*
从fontconfig 2.10.1开始已经被废弃( upstream commit ),未来的版本也不会默认读取这些文件当作配置依据。分别用 $XDG_CONFIG_HOME/fontconfig/fonts.conf
, $XDG_CONFIG_HOME/fontconfig/conf.d
和 $XDG_CACHE_HOME/fontconfig/*.cache-*
来代替。
via Font configuration (简体中文) - ArchWiki - Arch Linux
注释指明 ~/.fonts
元素将来会被移除,经过测试现在 ~/.fonts
可用,倒是第三项在刷新字体缓存的时候并不扫描该目录,将字体保存到 /home/u/.config/fonts
下并不能生效:
1 2 3 4 5 6 7 8 ... /usr/share/fonts/type1/gsfonts: caching, new cache contents: 35 fonts, 0 dirs /usr/local/share/fonts: caching, new cache contents: 0 fonts, 0 dirs /home/mo/.local/share/fonts: skipping, no such directory /home/mo/.fonts: caching, new cache contents: 9 fonts, 0 dirs Re-scanning /usr/share/fonts: caching, new cache contents: 0 fonts, 5 dirs Re-scanning /usr/share/fonts/X11: caching, new cache contents: 0 fonts, 4 dirs ...
至于当前用户的字体配置文件,在 /home/u/.config/fontconfig/conf.d
文件夹下。英文环境下日语汉字优先于中文汉字显示的原因是由于 /etc/fonts/conf.avail/64-language-selector-prefer.conf
文件中的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" ?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd" > <fontconfig > <alias > <family > sans-serif</family > <prefer > <family > Noto Sans CJK JP</family > <family > Noto Sans CJK SC</family > <family > Noto Sans CJK TC</family > </prefer > </alias > <alias > <family > monospace</family > <prefer > <family > Noto Sans Mono CJK JP</family > <family > Noto Sans Mono CJK SC</family > <family > Noto Sans Mono CJK TC</family > </prefer > </alias > </fontconfig >
Noto Sans CJK JP
的优先级在 Noto Sans CJK SC
之前,重新调整一下它们的顺序即可,可以将新配置文件保存在用户主目录之下, /home/u/.config/fontconfig/conf.d/64-language-selector-prefer.conf
。
1 2 3 4 5 ... <family > Noto Sans Mono CJK SC</family > <family > Noto Sans Mono CJK TC</family > <family > Noto Sans Mono CJK JP</family > ...