Почему 'DejaVu Serif' выбирается, когда я указываю 'Liberation Mono' в CSS?
Я использую браузер Iceweasel (производный Firefox) в системе Debian с рабочим столом XFCE4.
Я не определил никакой пользовательской замены шрифта в ~/.config/fontconfig/fonts.conf.
Это то, что fc-match говорит мне в настоящее время.
lone@debian:~$ fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match Courier
n022003l.pfb: "Nimbus Mono L" "Regular"
lone@debian:~$ fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
Поэтому я ожидаю, что когда у меня есть HTML, использование шрифта "Liberation Mono" должно давать те же результаты, что и "Courier". Но, как видно на скриншоте ниже, это не так (JSFiddle: http://jsfiddle.net/8L3rmyxn/).
Я нажал на "Проверить элемент" и нашел используемые шрифты.
Для текста, использующего "Liberation Mono" в CSS, браузер вместо этого использует "DejaVu Serif", что не согласуется с выводом fc-math.
Для текста с использованием "Courier" в CSS браузер использует "Nimbus Mono L", что соответствует выводу fc-match.
Для текста, использующего 'monospace' в CSS, браузер использует 'DejaVu Sans Mono', что снова согласуется с выводом fc-match.
Вопрос
Почему в случае шрифта "Liberation Mono" браузер не использует "Nimbus Mono L", а вместо этого использует шрифт "DejaVu Serif"?
Известное разрешение
Обратите внимание, что я знаю способ решения этой проблемы. Если я определю псевдоним для 'Liberation Mono' явно в ~ /.config / fontconfig / fonts.conf, то получу желаемые результаты, т.е. текст шрифтом 'Liberation Mono' и текст шрифтом 'Courier' будут выглядеть аналогично.
lone@debian:~$ cat ~/.config/fontconfig/fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>Liberation Mono</family>
<prefer><family>Nimbus Mono L</family></prefer>
</alias>
</fontconfig>
lone@debian:~$ fc-match "Liberation Mono"
n022003l.pfb: "Nimbus Mono L" "Regular
Опять вопрос
Но мой вопрос остается. Почему без этого явного псевдонима в fonts.conf, когда я указываю шрифт "Liberation Mono" в CSS, браузер не использует "Nimbus Mono L" и вместо этого использует шрифт "DejaVu Serif", даже если fc-match "Liberation Mono"
выводит одно и то же независимо от того, определил ли я псевдоним в fonts.conf или нет?
1 ответ
По умолчанию Firefox допускает не более 3 замен через fontconfig.
Вы можете установить gfx.font_rendering.fontconfig.max_generic_substitutions
в about:config, чтобы увеличить этот лимит. Максимально допустимое значение - 127.