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

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

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

<?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>

但不管怎样,似乎什么都没发生。我尝试运行 fc-cache,我检查了一下/etc/fonts/conf.d,发现50-user.conf它似乎明确调用了用户特定的配置。

我错过了什么?

谢谢

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

答案1

我认为您的配置中缺少绑定属性。(另请参阅字体配置)。根据您的其他配置,“same”或“strong”绑定可能有效,而“weak”可能无法满足您的要求。

<?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>

答案2

我认为别名机制可以解决这个问题:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>

答案3

“fc-list” 真的会显示“Helvetica”吗?fc-match 会显示什么?在我的机器 (F-12) 上,我得到:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

您也许还必须将别名字体添加到替换中。

答案4

我在尝试将 Helvetica 别名为 sans-serif 系列时遇到了类似的问题。对于遇到相同问题的人,请查看系统配置,其中/etc/fonts/conf.d/将包含来自 的文件链接/etc/fonts/conf.avail。我不得不删除许多这些别名才能获得确定性行为。

相关内容