Почему браузер использует Courier вместо Consolas для "font-family: Consolas, Courier", хотя Consolas доступен через замену fonts-conf?
Я использую браузер Iceweasel (ребрендинг Firefox) на Debian с XFCE4.
Я определил правило псевдонима в моем ~/.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
за Consolas
а также Nimbus Mono L
за 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>
Известное решение
Вот решение, которое работает для меня. Если я добавлю binding="strong"
приписать edit
пометьте, как показано ниже в ~ /.config / fontconfig / fonts.conf, тогда браузер использует DejaVu Sans Mono
за 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"
необходимо, чтобы браузер мог использовать DejaVu Sans Mono
за font-family: Consolas, Courier
на Debian?
Даже без binding="strong"
, fc-match Consolas
выводил DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
но почему браузер не смог использовать DejaVu Sans Mono
в таком случае?