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>
<!-- 设置微软雅黑为回退字体 -->
<match>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Microsoft YaHei</string>
</edit>
</match>
</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的程序都会遵守该配置文件