Почему '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.

Другие вопросы по тегам