Skip to content

Linux 下修改(系统)字体

装了一下宋体之后,发现 Firefox 的中文字体变成了宋体,怎么设置都和原来的有点不一样。后来查了一下,发现 Firefox 是用系统字体进行渲染,那就干脆把系统字体修改一下吧。学了一下 Linux 修改系统字体的方法。

查看默认字体

设置字体经常会遇到 serifsans-serifmonospace 这三个词,就可以把它理解为字体的分类形式,在西方国家罗马字母阵营中,字体分为两大种类: Sans SerifSerif,打字机体虽然也属于 Sans Serif,但由于是等宽字体,所以另外独立出 Monospace 这一种类,例如在 Web 中,表示代码时常常要使用等宽字体。

使用下面的命令去查看系统各个默认字体是什么。

fc-match serif
fc-match sans-serif
fc-match monospace

比如我的 fc-match serif 显示是 DejaVuSerif.ttf: "DejaVu Serif" "Book",说明我的 serif 默认字体是 DejaVu Serif

修改默认字体

排查发现我的 Firefox 中文显示字体的原因是 sans-serif 这类字体导致的,默认字体是 DejaVu Sans

这个字体是没有中文的,所以我估计系统显示中文就会默认找个别的字体来代替。所以假如我们想要 Firefox 显示的中文字体是 微软雅黑,那么就需要把这个字体加入到 sans-serif 的备选列表中,这样系统找中文字体会优先找这个列表(这都是我瞎猜的,很可能不对..)。

修改方式是在 .config/fontconfig/fonts.conf 这个文件中写入如下内容(没有就创建)。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
   <family>sans-serif</family>
   <prefer>
     <family>DejaVu Sans</family>
     <family>YaHei Consolas Hybrid</family>
   </prefer>
 </alias>
</fontconfig>

其中 YaHei Consolas Hybrid 是根据 fc-list | grep Ya 这样去找的。

Comments