Как предотвратить «автоматическую» полужирную версию шрифта более широким, чем обычный, имеющий одинаковый размер pt?

10

У меня есть моноширинный шрифт ( 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 02.02.2012 в 04:37
источник

1 ответ

7

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>

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

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

    
ответ дан zetah 23.02.2012 в 10:15
источник