我正在为意大利的一所学校配置 Ubuntu 18.04 LTS PC,我发现有超过 200 种字体作为ubuntu-desktop
软件包的依赖项进行安装。
我们不需要其中的大部分,例如,我们不希望 tipycal 用户用孟加拉语或泰语书写或阅读文档。实际上,如此多的字体使我们的用户(例如在 LibreOffice 中)的字体选择更加困难,因为这使他们很难找到有用的字体。
有没有办法在系统范围内禁用那些非拉丁字体,以便它们不会出现在应用程序中?
我知道我可以手动删除它们(例如清除fonts-tlwg-*
软件包),但我想保留它们的安装,以便单个用户可以在需要时稍后启用它们,而不会影响同一系统的其他用户。
答案1
无需卸载任何软件包,因为fontconfig
它提供了一种将某些字体或路径列入黑名单并将它们排除的方法,就好像它们不存在于系统中一样。
您只需要在系统或用户配置中添加如下几行:
<selectfont>
<rejectfont>
<glob>/usr/share/fonts/truetype/fonts-beng-extra/*</glob>
</rejectfont>
</selectfont>
配置存放位置
- 要在系统范围内禁用这些字体,请将这些说明放入
/etc/fonts/local.conf
- 要为一个用户禁用这些字体,你可以将它们放入
~/.config/fontconfig/fonts.conf
要为每个新用户设置默认行为,请将此配置放入/etc/skel/.config/fontconfig/fonts.conf
。
这样,不需要的字体默认会被禁用,但用户仍然可以通过编辑自己的fontconfig
配置文件来启用它们(最后一种方法对我的用例来说似乎更加灵活)。
显然,如果你把这个配置放进去,/etc/skel/
它不会影响现有用户。他们需要手动将其复制到自己的主目录中才能使其正常工作。
示例配置
这是我的完整fonts.conf
文件,它禁用了我不需要的所有非拉丁字体。它位于~/.config/fontconfig/fonts.conf
。
这不仅使字体列表更短,而且还使一些应用程序(如 LibreOffice)更快一些,因为它们需要处理更少的字体来预览,并且用户仍然可以根据需要为自己启用一些字体,而不会影响其他用户,也不需要管理员权限。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- disable non-latin fonts -->
<selectfont>
<rejectfont>
<glob>/usr/share/fonts/opentype/malayalam/*</glob>
<glob>/usr/share/fonts/opentype/noto/*CJK*</glob>
<glob>/usr/share/fonts/truetype/abyssinica/*</glob>
<glob>/usr/share/fonts/truetype/fonts-beng-extra/*</glob>
<glob>/usr/share/fonts/truetype/fonts-deva-extra/*</glob>
<glob>/usr/share/fonts/truetype/fonts-gujr-extra/*</glob>
<glob>/usr/share/fonts/truetype/fonts-guru-extra/*</glob>
<glob>/usr/share/fonts/truetype/fonts-kalapi/*</glob>
<glob>/usr/share/fonts/truetype/fonts-orya-extra/*</glob>
<glob>/usr/share/fonts/truetype/fonts-telu-extra/*</glob>
<glob>/usr/share/fonts/truetype/Gargi/*</glob>
<glob>/usr/share/fonts/truetype/Gubbi/*</glob>
<glob>/usr/share/fonts/truetype/kacst/*</glob>
<glob>/usr/share/fonts/truetype/kacst-one/*</glob>
<glob>/usr/share/fonts/truetype/lao/*</glob>
<glob>/usr/share/fonts/truetype/lohit*</glob>
<glob>/usr/share/fonts/truetype/malayalam/*</glob>
<glob>/usr/share/fonts/truetype/Nakula/*</glob>
<glob>/usr/share/fonts/truetype/Navilu/*</glob>
<glob>/usr/share/fonts/truetype/padauk/*</glob>
<glob>/usr/share/fonts/truetype/pagul/*</glob>
<glob>/usr/share/fonts/truetype/Sahadeva/*</glob>
<glob>/usr/share/fonts/truetype/samyak/*</glob>
<glob>/usr/share/fonts/truetype/samyak-fonts/*</glob>
<glob>/usr/share/fonts/truetype/Sarai/*</glob>
<glob>/usr/share/fonts/truetype/sinhala/*</glob>
<glob>/usr/share/fonts/truetype/tibetan-machine/*</glob>
<glob>/usr/share/fonts/truetype/tlwg/*</glob>
<glob>/usr/share/fonts/truetype/ttf-khmeros-core/*</glob>
</rejectfont>
</selectfont>
</fontconfig>
参考
答案2
@gerlos 的回答很棒,但就我个人而言,我不喜欢为每种语言指定单独的文件夹。这感觉有点麻烦,而且似乎很脆弱。
另一种方法是排除所有不支持所需语言的字体,例如en
在我的情况下是英语()。
用户配置文件(~/.config/fontconfig/fonts.conf
)可能看起来像这样:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
<fontconfig>
<selectfont>
<!-- reject all fonts -->
<rejectfont>
<pattern>
</pattern>
</rejectfont>
<!-- accept only fonts that support english -->
<acceptfont>
<pattern>
<patelt name="lang">
<string>en</string>
</patelt>
</pattern>
</acceptfont>
</selectfont>
</fontconfig>
如果这太严格,我们可以根据需要接受其他字体。
答案3
请注意ubuntu-desktop
建议大多数字体包;它不依赖它们。因此,您应该能够安全地删除字体包,同时仍保留ubuntu-desktop
。