拒绝目录中的所有字体(使用 fontconfig 的字体除外)

拒绝目录中的所有字体(使用 fontconfig 的字体除外)

我正在尝试禁用大多数其他语言的 noto 字体,除了少数使用 fontconfig 的语言。它使用rejectfontglob元素来禁用所有。然后使用acceptfontelement但无法激活它。

我在 fontconfig 邮件列表中遇到过类似问题的消息,但从未得到答复。https://lists.freedesktop.org/archives/fontconfig/2008-January/002826.html

我的配置文件中的内容在这里

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <selectfont>
    <rejectfont>
      <glob>/usr/share/fonts/truetype/noto/NotoSans*.ttf</glob>
      <glob>/usr/share/fonts/opentype/noto/NotoSans*.ttc</glob>
      <glob>/usr/share/fonts/opentype/noto/NotoSerif*.ttc</glob>
      <glob>/usr/share/fonts/truetype/noto/NotoSerif*.ttf</glob>
    </rejectfont>
  </selectfont>
  <selectfont>
    <acceptfont>
        <patelt name="family">
            <string>Noto Sans</string>
        </patelt>
    </acceptfont>
  </selectfont>
</fontconfig>

除了为每个系列(字体管理器使用的)编写拒绝字体规则之外,还有像这样的简单方法吗?

请不要建议我删除字体。

答案1

将以下 XML 添加到文件中~/.config/fontconfig/fonts.conf,它将所有 Noto 语言特定字体列入黑名单:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<selectfont>
    <rejectfont>
        <glob>/usr/share/fonts/truetype/noto/NotoKufi*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoNaskh*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoNastaliq*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans*</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif*</glob>
    </rejectfont>
    <acceptfont>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Regular.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Bold.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-BoldItalic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSans-Italic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Regular.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Bold.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-BoldItalic.ttf</glob>
        <glob>/usr/share/fonts/truetype/noto/NotoSerif-Italic.ttf</glob>
        <glob>/usr/share/fonts/noto/NotoSans-*</glob>
        <glob>/usr/share/fonts/noto/NotoSerif-*</glob>
    </acceptfont>
</selectfont>

并重建字体缓存:fc-cache -f -v

此后,Writer 中列出的 Noto 字体数量将从数百种减少到 17 种。

相关内容