用〜/ .fonts.conf替换字体


18

我正在尝试使用〜/ .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>

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

我想念什么?

谢谢

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


我来这里是因为我要做类似的事情。希望有人能给出答案……
路德维希·魏尼尔

还在寻找答案。
Capi Etheriel 2010年

Answers:


16

我认为您的配置中缺少绑定属性。(另请参阅fonts-conf)。根据您的其他配置,绑定“ 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>

1
为我工作。好像添加binding属性产生了变化。我正在使用fontconfig-2.8.0。
MaoPU 2010年

这对我
有用

3

我认为别名机制将对此起作用:

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

1
<alias>是否仅用于代替未安装的字体?
MaoPU 2010年

@MaoPU:我也有同样的想法,但是在阅读了文档之后,我认为该行为已配置。 <accept>未安装字体时<prefer>优先,无论是否安装字体均优先。
JM Becker

/ \不,实际上不是这样,除非.conf首先读取包含此规则的文件。
Marc.2377

嗯-也就是说,如果与元素一起使用,它确实可以工作!binding="strong"<alias>
Marc.2377

0

“ fc-list”实际上显示“ Helvetica”吗?fc-match说什么?在我的盒子(F-12)上,我得到:

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

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.