我在带有 XFCE4 的 Debian 上使用 Iceweasel 浏览器(更名为 Firefox)。
我在 ~/.config/fontconfig/fonts.conf 中定义了一个别名规则。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>Consolas</family>
<prefer><family>DejaVu Sans Mono</family></prefer>
</alias>
</fontconfig>
的输出fc-match确认Consolas现在将被替换为DejaVu Sans Mono。
lone@debian:~$ fc-match Consolas
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
lone@debian:~$ fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
现在,在浏览器中查看 JSFiddle 的以下输出:http: //jsfiddle.net/yyvgcw02/。

上面的截图显示浏览器已经正确使用DejaVu Sans Mono了 forConsolas和Nimbus Mono Lfor Courier。
但是,我期待它也可以DejaVu Sans Mono用于Consolas, Courier,但上面的输出显示它Nimbus Mono L再次用于Consolas, Courier?
为什么即使它出现在列表的第一位并且它的字体(即DejaVu Sans Mono系统上可用),它也没有使用?Consolas, CourierConsolasDejaVu Sans Mono
甚至下面的 ~/.config/fontconfig/fonts.conf 也没有效果。的输出fc-match和浏览器中的输出保持与以下配置相同。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family"><string>Consolas</string></test>
<edit name="family"><string>DejaVu Sans Mono</string></edit>
</match>
</fontconfig>
已知解决方案
这是一个适合我的解决方案。如果我在 ~/.config/fontconfig/fonts.conf 中binding="strong"向标记添加属性,edit如下所示,则浏览器将使用DejaVu Sans Monofor font-family: Consolas, Courier,如下面的截图所示。
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family"><string>Consolas</string></test>
<edit name="family" binding="strong"><string>DejaVu Sans Mono</string></edit>
</match>
</fontconfig>

问题
我想了解为什么binding="strong"浏览器必须能够在 DebianDejaVu Sans Mono上使用?font-family: Consolas, Courier
即使没有binding="strong",fc-match Consolas也在输出,DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"但为什么在这种情况下浏览器无法使用DejaVu Sans Mono?