使用 ~/.fonts.conf 替换字体

Mat*_*iva 20 linux fonts debian fontconfig

我正在尝试使用 ~/.fonts.conf 用 Droid Sans 替换 Helvetica,这是文件的内容:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
Run Code Online (Sandbox Code Playgroud)

但无论如何,似乎什么都没有发生。我尝试运行 fc-cache,我已经签入/etc/fonts/conf.d并发现50-user.conf它似乎明确调用了用户特定的配置。

我错过了什么?

谢谢

编辑:经过调查,我发现/etc/fonts/conf.d覆盖用户配置中的其他规则,因此链接user.conf00-user.conf帮助。仍然只是部分成功,因为我可以指定应该替换哪些字体,但是我选择的替换被忽略:换句话说,我可以使Helvetica无效并且系统回退到下一个字体(即在浏览器中,它采用样式表中指定的下一个字体,如果不存在则显示标准的无衬线字体)。

小智 18

我认为您的配置中缺少 binding 属性。(另见fonts-conf)。根据您的其他配置,“相同”或“强”的绑定可能有效,而“弱”可能无法满足您的需求。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。似乎添加`binding` 属性有所不同。我正在使用 fontconfig-2.8.0。 (2认同)