Linux使用指定字体显示汉字
正文
今天在知乎上刷到一篇介绍字体的文章,于是忍不住想解决一下Ubuntu系统中文字体显示异样的问题。
/etc/fonts/fonts.conf 配置文件中可以找到 mono , sans , system-ui 情境,结合 fc-match 命令可以查看对应情境使用的默认字体
直接替换Noto Sans Regular会破坏原生应用的布局显示,而我只是想在显示中文的时候使用自己定义的字体(Microsoft YaHei,Windows用的还是太多了),所以最后解决办法是创建 ~/.config/fontconfig/fonts.conf 文件。下面是文件内容:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- 为无衬线字体设置首选中文字体 -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Microsoft YaHei</family>
<family>Noto Sans CJK SC</family>
</prefer>
</alias>
<!-- 设置等宽字体回退 -->
<alias>
<family>monospace</family>
<prefer>
<family>DejaVu Sans Mono</family>
<family>WenQuanYi Zen Hei Mono</family>
<family>Sarasa Mono CL</family>
<family>Noto Sans Mono</family>
</prefer>
</alias>
</fontconfig>
彩蛋
gsettings 是GNOME的配置程序,使用它可以方便地配置和GNOME相关的所有东西,当然也可以配置字体:
gsettings get org.gnome.desktop.interface font-name # 查看桌面字体
gsettings set org.gnome.desktop.interface font-name 'Microsoft YaHei 11' # 设置桌面字体为微软雅黑 11号字体
gsettings reset org.gnome.desktop.interface font-name # 重置回原来的字体
更多用法参见 man gsettings
然而其实 gsettings 配置的字体只是GNOME程序的界面,相较之下上文使用fontconfig配置文件的方法更加彻底,所有使用fontconfig的程序都会遵守该配置文件