Ubuntu字体配置
说是字体配置,实际上就是简单的解决英语系统环境下中文字体显示不正确的问题.也可以解决中文环境下英文字体不好看的问题.
本文主要面向广大强迫症患者,如果嫌弃原装字不好看的话,直接使用tweak tool换一个中英双语的字体就好了,但是如果喜欢英文原装字体,但是又苦于中文显示不正确的朋友们,本文将起到一定的作用
原理
简单说来,桌面应用的字体一般是通过通用的字体家族(family,如serif,sans-serif等)定义的,应用安装后真正的显示效果又OS的配置决定,而OS做的就是将某个字体家族的名称映射到本地安装的某个字体,行为方式与css非常相似.所以我们在这里修改的配置,实际上是修改每个字体家族的映射关系(或称优先级)
ubunutu下桌面字体是通过配置文件加载的,配置文件就是我们所熟知的/etc/fonts/目录下的种种文件,内容是xml,标签含义参考官方说明
配置文件中,最主要的元素是match,它的两个子元素是test和edit,故名思议,这一个match就建立起了一个映射关系.其次是include元素,这个元素将把制定目录的配置文件一同加载,其他的元素如dir,cache等都无关.
font.conf:
这是所有配置文件中最先加载的,同时指定了缓存目录,字体目录和其他后续加载的配置文件的目录
conf.d:
本目录下存放所有会被加载的配置文件,根据其中的readme,每个文件名开始的数值既代表了功能,又代表了加载顺序(顺序加载的后果和css的效果是一样的)
操作流程
我们只需要编辑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,在被香甜的民主空气呛到之前,我们赶快把上下两个prefer元素中的前两个family元素调换位置……
也就是说,这样:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK JP</family>
<family>Noto Sans CJK TC</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK JP</family>
<family>Noto Sans Mono CJK TC</family>
</prefer>
</alias>
</fontconfig>
注销一次,即可看到想要的效果