我在带有 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 L
for Courier
。
但是,我期待它也可以DejaVu Sans Mono
用于Consolas, Courier
,但上面的输出显示它Nimbus Mono L
再次用于Consolas, Courier
?
为什么即使它出现在列表的第一位并且它的字体(即DejaVu Sans Mono
系统上可用),它也没有使用?Consolas, Courier
Consolas
DejaVu 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 Mono
for 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
?