这是个时间很久的问题,我现在能想到的办法是,自己测试一下看哪些字体能够删除,把删除命令全部写进脚本,新安装系统时,一次性执行一下这个脚本。
确实是老生常谈的问题,而且无论是 Linux 还是 Windows 都经常有人提。个人的建议是:
- 非美术设计从业人员,基本上用得到的字体是固定的。因此与其每次都找字体,不如花点时间修改默认模板的字体设置。这样,下次打开办公软件就可以直接打字了,不用再去管字体的事情。
- 如果经常需要使用各种美工字体,建议是多设置几种样式,比如 “正文1” 用黑体,“正文2” 用楷体,“正文3” 用手写体。需要用某种字体,就直接应用这种样式,一步到位。
Write 可以和 MS Word 一样修改各种样式的字体设置。至于 Calc(电子表格)和 Impress(幻灯片),可以参考本文设置默认字体:
至于删减字体,个人建议还是一定要慎重,有些字体可能只是你现在用不到,或者你不知道什么地方用得到。但日后需要它们的时候,它们不在,那可能就有点麻烦了。
或许更安全一点的方法是,用 apt-file
定位该字体文件是在哪个软件包里,然后删除这个软件包。如果删除这一软件包没有导致其他依赖问题,那么基本上可以肯定删除它是安全的。而且日后如果安装其他软件时需要它,还可以通过依赖关系装回来。
比如noto sans感觉就是一个完整的字体拆成了一段段, 要是有办法“注册”成一个字体就好了
Noto Sans 的计划是支持所有语言。如果全合并在一起,体积是非常大的。而且就拿中文来说,同一个字,在中国大陆、香港、日本、韩国的标准写法都是不一样的,因此必须要参照不同地区的写法设计多种不同的字体(所以你会看到 Noto Sans CJK
有 SC
、TC
等多个变种)。
个人建议,系统预装的字体,能不动就别去动。至于字体不好找的问题,GTK3 的字体选择窗口提供了搜索框,而 LibreOffice 的字体选择框其实也有搜索功能,您可以先先选择框中输入字体名称的前几个字符,再点击下拉框。(比如,要调用 DejaVu Sans
字体,先输入 Dej
,再按下拉按钮即可。若是 宋体
这种名字比较短的字体,直接在选择框中打字,然后敲 Enter 即可。)
最主要的问题是单个字体文件最多只能包含 65535(或者6?)个字符。所以字云才被分成了三个文件。
也不是不可以叫同一个名字然后根据语种使用不同的字形(如思源字体的做法)。同一个字体也可以有不同的字族名。
Ai一点也不知道……
就是写个bash脚本直接删,我的像这个样子的:
sudo find /usr/share/fonts -iname ‘arabicttf’ -delete
…
sudo fc-cache -f
可以有多达上百行
代码最好用代码块包裹一下,否则一些特殊符号(*
、_
、$
等)会被当作 Markdown 的标记进行渲染,看不到的。
比如您的代码里面:
莫名其妙出了一处斜体,应该是因为您的代码中有两个 *
。这个论坛用的是 Discourse 系统,帖子用的是 Markdown 语法,夹在两个 *
之间的内容会被渲染为斜体,同时 *
是隐藏的,就像 HTML 中的 <i></i>
标签。
另外,如果不用代码块包裹,英文引号会被换成弯引号,这样的引号 shell 是无法识别的。
正确的写法应该是:
```bash
sudo find /usr/share/fonts -iname '*arabic*ttf' -delete
…
sudo fc-cache -f
```
渲染出来的效果是:
sudo find /usr/share/fonts -iname '*arabic*ttf' -delete
…
sudo fc-cache -f
回到您的帖子,其实这种直接干掉字体文件的做法是非常危险的。比如您给出的例子,删掉的是阿拉伯语字体,那么日后在打开网页时,如果碰到阿拉伯语字母,大概率会显示成 tofu(空白方块)或乱码。
而且这样删,很有可能不小心把 UI 界面中符号图标的字体也一起删掉,这样很容易出大麻烦。比如之前有人手滑删了 Windows 系统中的 Wingdings 2 等字体,结果系统中很多界面的符号图标全部变成了方块,而且因为没有做记录,那人也记不清自己到底是删了哪些字体,最后只能重装系统解决。
首先查看系统里安装的字体:
apt list --installed | grep '^fonts-'
其中部分字体是作为推荐依赖安装的,不需要的话可以删除,常见的比如fonts-noto-extra
、fonts-noto-cjk-extra
等。
然后查看你想删除的字体是否可以删除:
apt rdepends --installed fonts-any-font-you-want-to-remove
如果上述命令列出的条目中没有Depends
依赖就说明可以删除。
最后,使用如下命令删除字体:
sudo apt autopurge fonts-any-font-you-want-to-remove
顺便说一下,noto
系列字体只保留fonts-noto-core
、fonts-noto-cjk
、fonts-noto-color-emoji
对于大多数用户来说应该就足够了。
顺便说一下,
noto
系列字体只保留fonts-noto-core
、fonts-noto-cjk
、fonts-noto-color-emoji
对于大多数用户来说应该就足够了。
装 font-manager 把大部分字体都禁用了,用一段时间看看情况
感觉真正的需求是保证字体库里最好有且仅有用到的字体,如果有比较方便的办法看到豆腐块就知道缺失的是什么字体就好了
这个可以有。不过首先你要么能复制出豆腐块来检查,要么豆腐块上写了它的编码(GTK 和火狐会写,Qt 不会)。
然后你专门创建个沙盒环境把所有字体都给 fontconfig 扫描,再 fc-list :charset=16进制编码
就能看到了。