Поставил я себе известный шрифт Iosevka. Вернее, семейство шрифтов («family»), в которое входит куча стилей: 9 «весов» (Thin, ExtraLight, Light, Regular, Medium, SemiBold, Bold, ExtraBold, Heavy), 3 наклона (Upright, Oblique, Italic), 2 ширины (Normal, Extended), всего 54 шрифта.
Но оказалось, многие программы с таким разнообразием работать не вполне умеют.
Например, редактор Geany позволяет выбрать любой шрифт из 54, но из выбранного шрифта используется только «family» и херится «style», т. е. при выборе любой ёсевки реально будет использоваться Iosevka Regular (Upright, Nornal). То есть я выбираю «Iosevka Extended», а текст отображается «Iosevka Regular» (это ещё полбеды, см. ниже).
Второй пример ещё хуже: Gnome Terminal. Этот в диалоге выбора шрифта показывает не 54 шрифта, а одну фамилию (т. е. Iosevka), и при выборе этой ёсевки реально используется Iosevka Thin (Upright, Normal), буквы в котором настолько тонкие, что их почти не видно.
Некоторые программы ведут себя более прилично. Gedit, к примеру, херит только наклон, и всегда рисует прямым шрифтом, даже если выбран италик, но уважает вес и ширину выбранного шрифта.
Баги на Geany и Gnome Terminal я повешу, а меж тем хотелось бы сделать какой-нить костыль, так как на скорое решение проблемы рассчитывать не приходится.
(Кстати, вместо Gnome Terminal можно использовать Tilix — у него проблем со шрифтами не наблюдается.)
Я подумал, костыль можно сделать с помощью fontconfig. Он, вроде бы, как раз и предназначен для таких костылей. Я нарисовал вот такой файл:
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match>
<test name="family">
<string>Iosevka Wide</string>
</test>
<edit name="family" mode="assign">
<string>Iosevka</string>
</edit>
<edit name="style" mode="assign">
<string>Extended</string>
</edit>
</match>
</fontconfig>
Теперь если приложение запрашивает шрифт с family == «Iosevka Wide», то fontconfig отдаёт ей «Iosevka» (family) «Extended» (style).
Но костыль получился неполноценный. Если в конфиге Geany я ручками пропишу шрифт «Iosevka Wide», то всё работает как надо. Но если я в редакторе пойду View → Change Font, то в диалоге выбора шрифта 54 варианта ёсевки есть, но «Iosevka Wide» нет. :-( В Gnome Terminal аналогично: «Iosevka Wide» в диалоге выбора шрифта нет. (В Gedit тоже нет (но там и не надо).) Видимо, алиасы в диалоге выбора шрифта не отображаются.
Собственно, вопрос: Как сделать э-э-э… «виртуальный шрифт», который отображается в диалоге выбора шрифта, но который реально не существует, а является алиасом для другого?