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

13

В течение долгого времени я использовал шрифт DejaVu Sans Mono в качестве программного шрифта. Я еще не нашел лучший шрифт.

Но недавно я обнаружил Fira в Mozilla , которая очень хорошо выглядит для кода . Поэтому я решил попробовать Emacs.

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

Я пробовал (setq line-spacing 0)разные комбинации вещей (set-frame-font (font-spec :name "Fira Mono" :width 'normal :height 100)), но независимо от того, что я делаю, остался чрезмерный межстрочный интервал. (К line-spacingсожалению, в Emacs нельзя использовать отрицательные значения, что может показаться очевидным решением.)

Это, похоже, не является ошибкой в ​​шрифте, потому что, когда я использую Fira Mono в Kate с тем же размером, межстрочный интервал - это то, что я считаю нормальным, и, очевидно, примерно такой же, как межстрочный интервал Emacs с DejaVu Sans. ,

Это ошибка в Emacs? Есть ли способ это исправить?

Спасибо за любой совет.

Слева: Emacs Fira Mono Справа: Emacs DejaVu Sans Mono Emacs Fira Mono против Emacs DejaVu Sans Mono

Слева: Emacs Fira Mono Справа: Кейт Фира Моно Emacs Fira Mono против Кейт Фира Моно

blujay
источник
1
Вы можете попробовать --line-spacing=PIXELSс командной строкой emacs, но я думаю, что это не поможет. Мой хрустальный шар говорит мне, что межстрочный интервал не вставляет лишних пикселей и что проблема в отображении шрифта в Emacs. Режим буфера имеет какое-то значение? (Я полагаю, что вы проверили, frame-parametersкакой шрифт и т. Д.)
Drew
2
Честно говоря, мне кажется, что у DejaVu недостаточно места, и если вы посмотрите на последний скриншот с Fira, то вы даже можете увидеть, что символы, которые имеют нисходящие элементы, такие как g и y, обрезаны. Кроме этого, я думаю, что минимальная высота строки будет рассчитываться на основе некоторого параметра TTF, поэтому, если вы действительно хотите изменить это, я бы хотел изменить файл TTF (или это OTF?), Чтобы изменить шрифт. Метрика, чтобы позволить меньше ведущих.
wvxvw
1
Что произойдет, если вы minspace=trueдобавите определение шрифта FontConfig? Например, что-то вроде emacs -fn 'Fira Mono:minspace=true', или как-нибудь название шрифта.
JCH
3
Это не то, что вы хотите услышать, но я отказался от межстрочного интервала чуть больше года назад. Вместо этого я выбираю шрифт, который мне удобен, и я устанавливаю :heightи все. Emacs на самом деле плохо контролирует расстояние между строками, и его настройка просто вызывает больше проблем. Возможно, будет уместным запрос функции - например, установить расстояние между строками в пикселях и заставить его работать со всеми шрифтами.
юрист
1
Высота строки является свойством шрифта, рендеринг Emacs учитывает заданное значение. Если вы установите определенную высоту независимо от свойства шрифта, вы можете получить обрезанные символы, как на скриншоте Fira Mono в Kate (как уже указывалось в wvxvw). Когда дело доходит до пропорциональных шрифтов, я считаю, что Lucida Grande Mono является наиболее эффективной с точки зрения пространства, но при этом она очень удобочитаема при небольших размерах (Droid Sans Mono подходит близко, но он менее плотный).
паприка

Ответы:

2

Fira Mono v3.2 отрегулировала высоту линии шрифта, что позволило мне использовать ее в Emacs:

https://github.com/mozilla/Fira/issues/67

cemerick
источник
Спасибо за обновление. Это кажется немного лучше, но я все равно получаю на 4 строки меньше в Emacs с Fira Mono 3.2, чем с DejaVu Sans Mono. Так что, к сожалению, это все еще бесполезно. Мне не нужно больше места между строками; это ничего не дает мне. Все, что он делает - это уменьшает то, что я вижу на экране, и заставляю меня больше прокручивать, снижая эффективность и тратя впустую мое время :( Жаль, что Mozilla больше заботится о том, чтобы шрифт выглядел более воздушным, чем делал его полезным.
blujay
... и вы можете получить еще 4 строки на экране с Consolas (например) по сравнению с DejaVu Sans Mono. Отдельные шрифты имеют различную внутреннюю высоту (и ширину, в случае моноширинных вариантов), которая не имеет ничего общего с межстрочным интервалом. Вменять какую-то злобу в Mozilla или Carrois (типовой литейный завод, который, похоже, возглавляет дизайн Fira), просто глупо.
Cemerick
Кто сказал что-нибудь о злобе? Или с каких пор «воздушный» = злоба? Дело в том, что в настоящее время существует тенденция к увеличению пробелов, в основном, во всех вещах, связанных с пользовательским интерфейсом. Практически каждый крупный веб-сайт, который в последнее время занимается редизайном, значительно увеличивает межстрочный интервал. Это то, что сейчас популярно. Те же самые тенденции перетекают в инструменты, созданные для создания этих вещей. «Больше пробелов на сайте = хорошо, поэтому больше пробелов в редакторе = хорошо». Этот догматизм не злой, просто бесполезный. Пожалуйста, постарайтесь понять, прежде чем защищаться от не-атак.
Блюджей
1
Да, и к вашему сведению, в работе есть код Fira с меньшим межстрочным интервалом. Надеюсь, это получится.
Блюджей
На данный момент, похоже, в Emacs есть серьезная проблема . («Комментарии можно редактировать только в течение 5 минут.» Вздох.)
blujay