Различный межстрочный интервал в зависимости от кодировки шрифта
Исторически я использовал 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 примет это.
