![使用 ~/.fonts.conf 替换字体](https://linux22.com/image/1232783/%E4%BD%BF%E7%94%A8%20~%2F.fonts.conf%20%E6%9B%BF%E6%8D%A2%E5%AD%97%E4%BD%93.png)
我正在尝试使用 ~/.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.conf
到00-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
。我不得不删除许多这些别名才能获得确定性行为。