Як не допустити, щоб "автоматична" жирна версія шрифту була ширшою, ніж звичайна, має однаковий розмір pt?


10

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

Як я можу контролювати "зміцнення" шрифту, щоб він не став ширшим за звичайний?

Проблема проілюстрована на скріншоті нижче ( PT Monoбез виділеного жирного шрифту). Подивіться, як слова "непідписані знаки" та "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латки.

введіть тут опис зображення


Ви не можете це контролювати. Дизайн шрифту буде зіпсований. Навіть якщо ви точно зменшите розмір (який ви не можете), щоб відповідати звичайному інтервалі шрифту, то жирний шрифт буде виглядати менше. Якщо ви хочете рівномірно розташований шрифт, просто не використовуйте жирний шрифт ... або спробуйте термінал
zetah

Це не правда. Шрифти, що мають як звичайні, так і жирні шрифти, надані в окремих файлах, мають однакову ширину знаків як у звичайних, так і жирними шрифтами. Наприклад, LetterGothic.
mbaitoff

Я стою виправлений. Я помітив те саме, використовуючи SciTE (і, можливо, ви теж використовуєте редактор на основі Scintilla - можливо, Geany?), Поки мій шрифт Droid Sans Mono, але я сприйняв це як належне, і я не мав уявлення, що зважений шрифт може мати різний інтервал навіть для одноразових шрифтів, тоді як жирний шрифт використовує такий самий інтервал, як і звичайний. Ще більше здається, що і пропорційні шрифти мають цю "особливість", яку ви помітили, ви не всі. Вибачте за свою сміливу першу відповідь, я повинен був перевірити першим
zetah

@zetah: Я виглядав через різні файли шрифтів і виглядає так, що насправді зміна ширини відбувається лише тоді, коли немає виділеної жирної версії шрифту. Я збираюся оновити питання ще більше скріншотами.
mbaitoff

1
згадується також тут: bugs.launchpad.net/ubuntu/+source/ttf-droid/+bug/565393
zetah

Відповіді:


9

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>

тоді програми можуть використовувати жирний одношаровий шрифт, якщо вони доступні, і вимкнути "синтетичну жирність", якщо використаний шрифт не має жирного шрифту.

Це просто альтернативний і дещо інший підхід з різним результатом


Якщо символьне посилання /etc/conf.d/50-user.confбуде перейменовано після виконання 90-synthetic.conf, вам не доведеться видаляти емболдент повністю. 99-user.confпрацює чудово. Інакше 90-synthetic.confввімкнути це знову.
musiKk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.