§ Замена Infinality для freetype 2.9
Итак с выходом нового FreeType 2.9 и обновления библиотеки HarfBuzz до версии 1.4.2, где осуществлён переход на FreeType 2.9 по умолчанию, пришел конец эре патчей Infinality для красивого рендера шрифтов. В данной статье я расскажу вам как вернуть шрифты если не в состояние Infinality то как минимум не хуже используя стандартную библиотеку FreeType 2.9
Я думаю вы уже натыкались на подобные статьи где ребята пишут собственные улучшайзеры. Однако посмотрев на них подробнее я был глубоко разочарован. По большому счёту они просто ставят на систему куеву хучу каких-то левых шрифтов после чего успешно подменяют ими стандартные шрифты типа Helvetica, Arial и Times New Roman что бы шрифт на экране не выглядел вырвиглазно.
Лично мне такой подход претит по двум параметрам: во-первых он не решает основной проблемы - плохой рендер стандартных шрифтов, а во-вторых доставляет истинное неудобство тем у кого как и у меня в системе установленны всякие SanFrancisco, Helvetica и прочие Arial. В этом случае на ваши предпочтения будет забит болт и вы все равно будете смотреть на экране шрифты которыми заменили в настройках нормальную Helvetica, а мне не нравится когда мои настройки система игнорирует и показывает то что ей кажется лучше а не то что я выбрал.
В итоге конфигурация на которой я остановился и которая меня целиком устраивает выглядит так:
1. В системе установлен стандартный freetype2 и fontconfig без всяких infinality или infinality-ultimate.
2. Файл /etc/profile.d/freetype2.sh содержит следующую строку:
export FREETYPE_PROPERTIES="truetype:interpreter-version=40"
Да я знаю что infinality был добавлен во FreeType 2.8 и требовал interpreter-version=38, однако мои наблюдения показали что 40я версия даёт результат чуть лучше, плюс работает ощутимо быстрее, ибо требует меньше накладных ресурсов из-за выпилиной обратной совместимости со старыми шрифтами Microsoft. Я такие шрифты не использую, но если у вас есть такие то попробуйте выставить версию в 38 возможно это поможет.
3. Я выкинул из /etc/fonts/conf.d/ все симлинки за исключением следующих 5 файлов:
10-hinting-slight.conf
10-sub-pixel-rgb.conf
11-lcdfilter-default.conf
69-unifont.conf
70-yes-bitmaps.conf
У вас они могут иметь несколько другие цифры но смысл их достаточно прост: включение хиттинга в режими Slight, включение суб-пиксельного сглаживания в режиме RGB (подходит для большинства дисплеев), включение LCD фильтра, разрешение вывода пиксельных шрифтов и 69-unifont.conf содержит описание шрифтов для классов 'sans', 'serif' и 'sans-serif' которые так-же часто используются в системе.
По умолчанию эти классы используют убогие FreeSans и FreeSerif, однако вот что он содержит у меня
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias> <family>serif</family> <prefer> <family>Noto Serif</family> <family>Liberation Serif</family> <family>Times New Roman</family> </prefer> </alias> <alias> <family>sans</family> <prefer> <family>Noto Sans</family> <family>Droid Sans</family> <family>Liberation Sans</family> </prefer> </alias> <alias> <family>sans-serif</family> <prefer> <family>Noto Sans</family> <family>Droid Sans</family> <family>Liberation Sans</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Roboto Mono</family> <family>PT Mono</family> <family>Liberation Mono</family> </prefer> </alias> </fontconfig>
Исходя из собственных предпочтений вы можете настроить эти типы шрифтов самостоятельно.
В конце я хочу сказать что FreeType 2.9 на самом деле привносит довольно немало улучшений, и я все-же рекомендую использовать его, вместо отката HarfBuzz на предыдущую версию. А содержание вашего /etc/fonts/ в чистоте поможет вам избежать проблем со шрифтами и их нормальном отображении.
Snowmean от 6/02/2018






