Skip to content

Instantly share code, notes, and snippets.

@yeahnoob
Created October 27, 2016 09:46
Show Gist options
  • Save yeahnoob/629e340b69b6f842bebf4da3af2c7da1 to your computer and use it in GitHub Desktop.
Save yeahnoob/629e340b69b6f842bebf4da3af2c7da1 to your computer and use it in GitHub Desktop.
修正Ubuntu 16.04 LTS命令行的中文字体(不影响英文字体)

修正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> 这样——不过应该涉及到微软字体的许可限制,还是避免使用吧。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment