Различный межстрочный интервал в зависимости от кодировки шрифта

Исторически я использовал Monotype Courier New в качестве шрифта XTerm (он хорошо отображает как кириллические символы, так и символы рисования прямоугольников). При переходе с устаревшего KOI8-R на язык UTF-8 я заметил изменение межстрочного интервала (или начала), из-за которого Courier New больше не подходит для терминалов.

Вот как выглядит мой XTerm в ru_RU.KOI8-R локаль (12pt Курьер Новый):

Вот как это выглядит сейчас (ru_RU.UTF-8, Снова 12pt, ширина символа такая же, но обратите внимание на увеличенные начальные, вертикальные символы рисования прямоугольников образуют двойную "пунктирную" линию):

Судя по всему, XTerm - не единственное уязвимое приложение. По сути, все программы, использующие шрифты Core X11, демонстрируют одинаковое поведение. Взгляни на xfontsel отображение разных кодировок одного и того же шрифта:

KOI8-R:

ISO 10646-1 (что означает Unicode):

Интересно, что Courier New, кажется, является единственным затронутым моноширинным шрифтом. Другие шрифты, такие как -misc-freemono-*, имеют одинаковое начальное значение независимо от кодировки.

Теперь вопрос:

Есть ли способ, которым я могу обеспечить конкретное ведение для определенного шрифта? Должен ли я заглянуть в библиотеку FreeType? Или Xft? Любые идеи приветствуются.

1 ответ

Решением может быть использованиеscaleHeightресурс в.Xresourcesфайл, описанный как:

Отрегулируйте межстрочный интервал

Строки текста иногда могут располагаться слишком близко друг к другу или располагаться слишком далеко друг от друга. Например, при использовании DejaVu Sans Mono нижний символ подчеркивания может сталкиваться с глифами CJK или блоком курсора в строке ниже. Межстрочный интервал, который типографы называют интерлиньяжом, можно отрегулировать с помощью следующего ресурса, например, чтобы увеличить интервал:

       XTerm.scaleHeight: 1.01

Допустимые значения в диапазоне от 0,9 до 1,5, где значение по умолчанию — 1,0.

Я бы предложил попробовать и посмотреть, достаточно ли минимума:

      XTerm.scaleHeight: 0.9

Вы можете попытаться пойти ниже этого, если это необходимо и если XTerm примет это.

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