У меня проблемы с fontconfig, распознающим UI-монопространство
шрифт, который недавно начали использовать несколько веб-сайтов (включая сайты Github и Stack Exchange). Firefox еще не имеет этой специальной ссылки CSS на системные шрифты (см. Ошибка ФФ 1226042, проект спецификации, И его Могу ли я использовать запись), а FF также обманывается с помощью fontconfig, который удовлетворит любой шрифт с его назначением по умолчанию для sans-serif.
В качестве обходного пути я хотел бы явно присвоить это имя шрифта моему предпочтительному моноширинному шрифту (который Паника Санс, измененный вариант DejaVu Sans Mono, который немного смещает подчеркивание вверх), но поскольку это так неясно, в этом вопросе используется Дежавю без моно.
Моя первая попытка этого обходного пути не работает:
<alias>
<family>ui-monospace</family>
<prefer><family>DejaVu Sans Mono</family></prefer>
</alias>
Еще одна попытка, которая имела больший успех для других шрифтов:
<match>
<test name="family"><string>ui-monospace</string></test>
<edit name="family" mode="assign" binding="strong">
<string>DejaVu Sans Mono</string>
</edit>
</match>
Когда я сохраняю это и очищаю кеш, это не работает:
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>UI-monospace</string></test>
$ fc-кэш -f
$ fc-match 'ui-monospace'
Carlito-Regular.ttf: "Карлито" "Обычный"
$ fc-match без засечек
Carlito-Regular.ttf: "Карлито" "Обычный"
Так что это не работает. Вот любопытная часть: это работает, когда я использую пробел вместо дефиса:
$ sed -i 's/ui-monospace/ui monospace/' ~/.config/fontconfig/fonts.conf
$ grep ui.monospace ~/.config/fontconfig/fonts.conf
<test name="family"><string>моноширинный пользовательский интерфейс</string></test>
$ fc-кэш -f
$ fc-match 'моноширинный пользовательский интерфейс'
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Книга"
Итак, похоже, проблема в дефисе. Я не вижу никакой документации (или отчетов об ошибках), указывающей на эту проблему; в документы fontconfig для <string>
не делайте никаких замечаний о недопустимых символах или о том, как их избежать. Я пытался определить это как <string>ui\-monospace</string>
и <string>ui-monospace</string>
(и -
), но ни один из них не работал.
Как настроить fontconfig для сопоставления имени шрифта с дефисом?