У меня есть моноширинный шрифт ( 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
:затем приложения могут использовать жирный моноширинный шрифт, если он доступен, и отключить «синтетический жирный шрифт», если используемый шрифт не имеет жирного шрифта.
Это просто альтернатива, и немного другой подход с другим результатом
источник
/etc/conf.d/50-user.conf
переименована для выполнения после90-synthetic.conf
, вам не нужно полностью удалять embolden.99-user.conf
работает отлично. В противном случае,90-synthetic.conf
включите его снова.