У меня есть моноширинный шрифт (PT Mono
), который я предпочитаю использовать в программировании IDE. Шрифт имеет только Regular
, все остальные Bold
и Italic
получены путем наклона и «жирного шрифта» из Regular
. Проблема в том, что «выделенные» символы шире, чем обычные, поэтому строки исходного кода в окне IDE теперь состоят из немонокальных символов.
Как управлять «выделением шрифта», чтобы он не стал шире обычного?
Проблема проиллюстрирована на скриншоте ниже (PT Mono
, выделенного жирным шрифтом). Посмотрите, как слова «unsigned char» и «sizeof» выходят из правильных позиций.
Вот еще один пример, Droid Sans Mono
(без выделенного жирным шрифтом).
А вот пример, когда шрифт имеет выделенную жирную версию (Liberation Mono
). Жирный и регулярный идеально выровнены.
Итак, проблема определенно заключается в несерьезном выделении жирным шрифтом в ситуациях, когда жирный шрифт не предоставляется. Виноват движок шрифтов.
UPD: есть файл /etc/fonts/conf.avail/90-synthetic.conf
, который, если на него ссылаются из /etc/fonts/conf.d/
, настраивает механизм шрифтов для выполнения синтетического подталкивания шрифтов, которые не имеют жирного шрифта. Если символическая ссылка на этот файл удалена из /etc/fonts/conf.d/
, придание силы исчезает. Это не то, что нужно, но, по крайней мере, это устраняет случай, когда моноширинные шрифты не являются моноширинными (см. Ниже, PT Mono
). Точная настройка ободрения все еще требуется (либо с помощью файла конфигурации, либо патчем freetype2
.
mbaitoff , я публикую это как дополнение к вашему обновлению, а не как ответ.
Если пользователь создает файл с именем ~/.fonts.conf
:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<test name="spacing" compare="eq">
<const>mono</const>
</test>
<edit name="embolden" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
затем приложения могут использовать жирный моноширинный шрифт, если он доступен, и отключить «синтетический жирный шрифт», если используемый шрифт не имеет жирного шрифта.
Это просто альтернатива, и немного другой подход с другим результатом.