Как предотвратить & ldquo; автоматический & rdquo; жирный шрифт, который будет шире обычного, с тем же размером pt?

У меня есть моноширинный шрифт (PT Mono), который я предпочитаю использовать в программировании IDE. Шрифт имеет только Regular, все остальные Bold и Italic получены путем наклона и «жирного шрифта» из Regular. Проблема в том, что «выделенные» символы шире, чем обычные, поэтому строки исходного кода в окне IDE теперь состоят из немонокальных символов.

Как управлять «выделением шрифта», чтобы он не стал шире обычного?

Проблема проиллюстрирована на скриншоте ниже (PT Mono, выделенного жирным шрифтом). Посмотрите, как слова «unsigned char» и «sizeof» выходят из правильных позиций.

automatic boldification changes the width

Вот еще один пример, Droid Sans Mono (без выделенного жирным шрифтом). enter image description here

А вот пример, когда шрифт имеет выделенную жирную версию (Liberation Mono). Жирный и регулярный идеально выровнены. enter image description here

Итак, проблема определенно заключается в несерьезном выделении жирным шрифтом в ситуациях, когда жирный шрифт не предоставляется. Виноват движок шрифтов.

UPD: есть файл /etc/fonts/conf.avail/90-synthetic.conf, который, если на него ссылаются из /etc/fonts/conf.d/, настраивает механизм шрифтов для выполнения синтетического подталкивания шрифтов, которые не имеют жирного шрифта. Если символическая ссылка на этот файл удалена из /etc/fonts/conf.d/, придание силы исчезает. Это не то, что нужно, но, по крайней мере, это устраняет случай, когда моноширинные шрифты не являются моноширинными (см. Ниже, PT Mono). Точная настройка ободрения все еще требуется (либо с помощью файла конфигурации, либо патчем freetype2.

enter image description here

10
задан 6 February 2012 в 06:54

1 ответ

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>

затем приложения могут использовать жирный моноширинный шрифт, если он доступен, и отключить «синтетический жирный шрифт», если используемый шрифт не имеет жирного шрифта.

Это просто альтернатива, и немного другой подход с другим результатом.

0
ответ дан 6 February 2012 в 06:54

Другие вопросы по тегам:

Похожие вопросы: