GTK架构程序文字变为方块字的解决办法(GTK2和GTK3)

GTK2程序,如leafpad

解决办法为:修改gtkrc-2.0文件

nano ~/.gtkrc-2.0

粘贴以下内容(根据你安装的字体调整):

style "user-font"
{
    font_name = "WenQuanYi Zen Hei 12"
}

widget_class "*" style "user-font"

gtk-font-name = "WenQuanYi Zen Hei 12"
gtk-theme-name = "Breeze"         # 可选:匹配 KDE 主题
gtk-icon-theme-name = "breeze"    # 可选:匹配 KDE 图标
gtk-cursor-theme-name = "breeze_cursors"  # 可选:匹配 KDE 光标

保存后,重启 GTK2 程序(如 leafpad、vmware),中文应恢复正常

GTK-3程序,如GIMP或者VMware

解决办法为:使用 fontconfig 配置

创建或编辑 /etc/fonts/conf.d/69-language-selector-zh-cn.conf

sudo nano /etc/fonts/conf.d/69-language-selector-zh-cn.conf

粘贴以下内容:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>WenQuanYi Zen Hei</string>
      <string>Noto Sans CJK SC</string>
      <string>SimSun</string>
    </edit>
  </match>
</fontconfig>

重建字体缓存

sudo fc-cache -fv

其它问题

但是奇怪的是,如果我想换为其它字体,打开则又变为方块字,如:

sudo nano /etc/fonts/conf.d/69-language-selector-zh-cn.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>LXGW WenKai</string>
      <string>WenQuanYi Zen Hei</string>
      <string>Noto Sans CJK SC</string>
      <string>SimSun</string>
    </edit>
  </match>
</fontconfig>

sudo fc-cache -fv