修正Ubuntu 16.04 LTS命令行的中文字体(不影响英文字体)
操作系统 Ubuntu 16.04 LTS 默认的命令行终端(Terminal)里的中文字体配置是有一点问题的。
比如“门”这个中文汉字,在 Terminal 里会显示成一个现在基本用不到的古代异体字(估计是日文汉字的默认字体)。
可以整体使用中文字体,但是如果英文字体想选其他的,比如想用Source Code Pro系列,就需要找变通办法。
一个办法,是造一个混合字体,把自己想要的中文字体和英文字体手工合并一个。但是更换其中任何一个字体都不是那么灵活——每次换字体,都需要重头手工合并一次。
另外一个办法,比较灵活,只需要一个配置文件(ubuntu fontconfig的默认配置文件),涉及到的是 /etc/fonts/conf.avail/64-language-selector-prefer.conf
其原始内容如下,
<?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 Mono CJK JP,JP是日文的缩写(这比较丢面子,日文默认排在了简体中文和繁体中文前面)。
怎么改呢? 很简单——把 <family>Noto Sans CJK SC</family>
提前到<prefer>
段内的第1行,然后重开Terminal ,中文字体显示正常。(SC 是简体中文的缩写)
同理,修改这个文件,也能更改 Terminal 默认使用的中文字体,比如改成下面这样,就会变为文泉驿(WenQuanYi Zen Hei Mono)的中文字体,
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>WenQuanYi Zen Hei Mono</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
</fontconfig>
当然也可以改成其他的,比如微软雅黑的就是<family>Microsoft YaHei</family>
这样——不过应该涉及到微软字体的许可限制,还是避免使用吧。