4

我在带有 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了 forConsolasNimbus 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

4

0 回答 0