Ubuntu删除系统字体后个别程序中的字变成豆腐

系统字体配置、中文显示和输入法问题
回复
头像
dqwyy
帖子: 19
注册时间: 2017-02-20 17:22
来自: Teochew
联系:

Ubuntu删除系统字体后个别程序中的字变成豆腐

#1

帖子 dqwyy » 2018-10-10 15:11

各位好,我目前使用的是Ubuntu 18.04.1 LTS。由于系统自带的字体太多,且个别较为难看,而且我也不需要那么多,所以决定删除大部分不需要的系统自带字体。删除完之后,西文字体我只留下FreeSans、FreeSerif和FreeMono,也就是说我把Ubuntu和DejaVu也给删除了。至于CJK字体,我把原来的noto的OTC给删了,然后自己装了Souce Han的otf。以上所执行的删除操作是通过删除 /usr/share/fonts/ 里面的字体文件来完成的。当然我也通过Tweaks修改了系统字体,把Interface字体设置成Source Han Sans。

这样子一弄之后,发现大部分软件的显示是正常的,例如我目前用的aMule、WPS之类的,里面的UI字体都是显示的我设置的Source Han Sans。直到我通过apt install安装了Gimp 2.10之后,打开之后,发现里面的字全部变成豆腐。由于我系统是英文的,而里面的英文和数字也是显示为豆腐,这一点有点让我惊讶。具体情况可参照我往Gimp邮件列表发的这一个讨论串: https://mail.gnome.org/archives/gimp-us ... 00004.html

图片

从上图可以看出里面大部分字是豆腐,只有少部分字是正常显示的,正常显示的这部分显示的正是我所设置的Souce Han Sans,变成豆腐的那部分明显是没按我的设置,可能是自己寻找某种字体,然后找不到,然后fallback又出问题了,所以就显示为豆腐。我一开始以为西文fallback字体是Ubuntu,所以重装了已经被我删除的Ubuntu字体,后来发现没用,然后邮件列表有人告诉我西文默认fallback字体是DejaVu,然后我重装了DejaVu也没用。后来我通过卸载Gimp,换用其官方网站推荐的flatpak重装了Gimp,结果字体能够正确显示,也就是说能够正确地用我所设置的Source Han Sans了。具体详情可以参见上一段我给出的邮件列表存档。

本来以为这样就可以了,结果我发现其他软件也出问题了,同样的症状。例如计算器还有Character,这两个软件一打开也是看到一堆豆腐。

图片

然后我通过从LiveCD里面复制了 /user/share/fonts 文件夹,把然后覆盖掉被我删减过的fonts文件夹,这样子我通过font manager来看,确实是所以字体都回来了,但是,软件出现的豆腐还是没能解决。我刷新了字体缓存也不起作用。

请问这种情况应该如何解决?谢谢。
上次由 dqwyy 在 2018-10-11 7:56,总共编辑 1 次。
头像
astolia
论坛版主
帖子: 6436
注册时间: 2008-09-18 13:11

Re: Ubuntu删除系统字体后个别程序中的字变成豆腐

#3

帖子 astolia » 2018-10-10 20:41

fc-cache -r和sudo fc-cache -r清理一下字体cache?
头像
qiang_liu8183
论坛版主
帖子: 10699
注册时间: 2006-09-10 22:36
系统: Arch Debian
来自: 北京

Re: Ubuntu删除系统字体后个别程序中的字变成豆腐

#4

帖子 qiang_liu8183 » 2018-10-10 21:12

不要蛮干,删除字体正确的方法是用包管理软件,系统会自动删除字体文件并重建fonts.dir和fonts.scale后刷新cache,建议你用包管理软件把你删除的字体的包重新装回来,再按照正确的方法删除你不想要的字体
看破、放下、自在、随缘、念佛
真诚、清净、平等、正觉、慈悲
头像
dqwyy
帖子: 19
注册时间: 2017-02-20 17:22
来自: Teochew
联系:

Re: Ubuntu删除系统字体后个别程序中的字变成豆腐

#5

帖子 dqwyy » 2018-10-10 23:45

xenomorph0525 写了: 2018-10-10 19:01 對於系統字型,若要刪除應該要用「移除套件」的方式,而不是從「/user/share/fonts」刪除。

查詢你所刪除的字型屬於哪個套件之後,「sudo apt --reinstall 套件」。
https://packages.ubuntu.com/
感謝您的回覆。正如我文中所言,我是把作業系統內建的西文字型幾乎是全部刪除了,只留下FreeSans、FreeSerif和FreeMono。如果要重新安裝所有的字型套件應該是比較麻煩的,然後郵件列表裏有人說西文字型是fallback到DejaVu的,所以我重新安裝了DejaVu字型和Ubuntu字型並清除了字型快取,但仍然不起作用。

图片

其實我比較疑惑的一點是,明明在字型設置那裏設置了Source Han Sans作爲介面的字型,不知爲何一些軟體沒有按照這個設置來,像其他那些按照這個字型設置來的軟體,它們的介面字型就是Source Han Sans,所以自然不會出現tofu。難道是因爲這些出現tofu的軟體在選擇字型的時候是按照另外一個設定檔?
上次由 dqwyy 在 2018-10-11 0:05,总共编辑 1 次。
头像
dqwyy
帖子: 19
注册时间: 2017-02-20 17:22
来自: Teochew
联系:

Re: Ubuntu删除系统字体后个别程序中的字变成豆腐

#6

帖子 dqwyy » 2018-10-10 23:47

astolia 写了: 2018-10-10 20:41 fc-cache -r和sudo fc-cache -r清理一下字体cache?
正如我在一楼所写的,之前已有尝试过这个命令,但是仍然不起作用。
xenomorph0525
帖子: 522
注册时间: 2009-11-21 20:29

Re: Ubuntu删除系统字体后个别程序中的字变成豆腐

#7

帖子 xenomorph0525 » 2018-10-11 3:10

dqwyy 写了: 2018-10-10 23:45
感謝您的回覆。正如我文中所言,我是把作業系統內建的西文字型幾乎是全部刪除了,只留下FreeSans、FreeSerif和FreeMono。如果要重新安裝所有的字型套件應該是比較麻煩的,然後郵件列表裏有人說西文字型是fallback到DejaVu的,所以我重新安裝了DejaVu字型和Ubuntu字型並清除了字型快取,但仍然不起作用。

其實我比較疑惑的一點是,明明在字型設置那裏設置了Source Han Sans作爲介面的字型,不知爲何一些軟體沒有按照這個設置來,像其他那些按照這個字型設置來的軟體,它們的介面字型就是Source Han Sans,所以自然不會出現tofu。難道是因爲這些出現tofu的軟體在選擇字型的時候是按照另外一個設定檔?
字型是由「/etc/fonts/conf.avail」底下的設定檔指定,說不定你刪到有被指定的字型了?
头像
dqwyy
帖子: 19
注册时间: 2017-02-20 17:22
来自: Teochew
联系: