Возможна ли регулировка вертикального межстрочного интервала в Konsole (и других приложениях CLI)?

Возможна ли регулировка вертикального межстрочного интервала в Konsole (и других приложениях CLI)?

Можно ли уменьшить межстрочный интервал в консоли?

В разделе «Настройки/Дополнительно» есть опция «Интервал между строками», но ее можно уменьшить только до 0, и даже при значении 0 между строками остается значительное пространство (т. е. слишком много того, что в типографике обычно называютведущий, пустой вертикальный интервал между строками текста). Я использую очень консервативный по вертикали шрифт Inconsolata, который имеет минимальный вертикальный интервал по сравнению, например, с Monospace, но даже с этим шрифтом все равно слишком большой интервал между строками при используемом мной размере шрифта (13).

Есть ли способ еще больше уменьшить вертикальный межстрочный интервал, не взламывая сам шрифт для компенсации? Многие редакторы позволяют это сделать, но я не могу придумать, как это сделать в Konsole (ниже нуля) или, возможно, во всем KDE в целом в виде какой-то системной настройки.

решение1

Для тех, кому интересно, я нашел способ сделать это, но это требует редактирования шрифта. Это должно сэкономить вам часы, если не дни гугления и разочарования, потому что я знаю, что потратил непомерное количество времени, пытаясь разобраться во всем этом. Пожалуйста, не расстраивайтесь из-за стены текста, которая является шагами. Весь процесс занимает буквальноменее пяти минут. Я только что приложил немало усилий, чтобы полностью это объяснить, так что это может занять пять минут :) и естькак можно меньше двусмысленностиотносительно того, что делать и в какой последовательности.

Вот как можно настроить вертикальный интервал между строками по своему усмотрению во всех приложениях с графическим интерфейсом Linux:

  1. Загрузите и установите FontForge (пакет должен вызываться fontforgeс помощью yum, apt-get, dnf, или любого другого используемого вами менеджера пакетов). Он также доступен на github, если вам нравится делать все вручную:подробности установки github
  2. Откройте шрифт, который вы хотите изменить (в моем случае Inconsolata). Примечание: перед тем, как менять шрифт или даже создавать новый шрифт, что я настоятельно рекомендую, скопируйте старый(ие) шрифт(ы) из /usr/share/fonts/...в ~/.local/share/fontsи внесите все изменения (или новые добавления шрифтов) в ваш локальный fontsкаталог, в который в качестве бонуса у вас будут права на запись, без необходимости доступа root (в /usr/share/fonts).
  3. Хорошо, вернемся к FontForge, который вы можете запустить как: fontforgeпосле установки. Начните с открытия шрифта из .local/share/fontsкаталога, в который вы скопировали исходный шрифт. Просто введите .local/share/fonts, предположив, что вы запустили fontforge из своего домашнего каталога, и он перенесет вас в этот каталог. Обратите внимание, что fontforge не любит символ ~вместо вашего домашнего каталога, поэтому используйте относительные или абсолютные пути, но не используйте ~при открытии файла шрифта. Если у вас есть подкаталог для вашего шрифта там, просто щелкните по нему, чтобы открыть его, и, наконец, выберите и откройте сам шрифт. Прежде чем мы что-либо изменим, мы должны переименовать шрифт. В меню выберите Element/Font Info..., чтобы открыть Font Informationдиалоговое окно. Перейдите в категорию General слева и давайте изменим имя шрифта, добавив после него суффикс (например, я изменил Inconsolata на InconsolataDense80, чтобы указать, что я уменьшу вертикальный межстрочный интервал (т. е. интерлиньяж) до 80 процентов от его текущего значения). Обязательно внесите это изменение три раза для каждого из полей «Имя шрифта», «Фамилия» и «Имя для людей» соответственно.
  4. Далее выберите категорию OS/2 слева (кто бы мог подумать???) и выберите вкладку «Метрики» вверху.
  5. Мы изменим значения HHead Ascent и Descent, единственные два значения, которые влияют на вертикальный интервал в Linux. Удачи вам в самостоятельном выяснении этого. Мне потребовались годы, чтобы найти эти пресловутые иголки в стоге сена, алмазы в необработанном виде, ваша аналогия по выбору :) !
  6. Обязательно запишите (например, сделайте запись) текущие значения, прежде чем вносить какие-либо изменения.
  7. Теперь, чтобы изменить вертикальный интервал, нам нужно умножить два значения на коэффициент, зависящий от того, на сколько вы хотите уменьшить вертикальный интервал (в моем случае я использовал 80% от текущих значений). Вероятно, вы захотите использовать один и тот же коэффициент для обоих в 99% всех случаев. Если это не сработает или вызовет артефакты отображения, вы можете позже использовать другие коэффициенты для тонкой настройки отдельных значений в качестве абсолютного последнего средства. Артефакты также могут означать, что вы слишком сильно уменьшили значения, и под уменьшением я подразумеваю движение к нулю (т. е. уменьшение их величин, их абсолютных значений, поскольку спуск HHead может быть отрицательным, поэтому вы фактически увеличите его в числовом смысле, если умножите его на положительный процентный коэффициент масштабирования).
  8. Установите для каждого из параметров HHead Ascent и Descent значения, которые вы рассчитали на шаге 7 (например, 80% от их предыдущих значений будет хорошим началом)
  9. Мы закончили с диалоговым окном «Информация о шрифте», теперь давайте нажмем кнопку «ОК».
    1. На этом этапе давайте сохраним наш шрифт как файл .SDF, для этого выберите Файл/Сохранить как..., и он должен запомнить новое имя шрифта, которое вы установили ранее.
    2. Теперь, чтобы применить наши изменения, нам нужно (пере)генерировать шрифт. Выберите Font/Generate Fonts... в меню FontForge. Если вы имеете дело со шрифтом TrueType, убедитесь, что TrueType выбран под именем файла шрифта. Затем нажмите кнопку Generate. Вы можете получить различные обнаруженные ошибки, которые вы можете спокойно игнорировать — нажмите кнопку Generate в этом диалоговом окне, если оно, как вам кажется, продолжает генерацию шрифта.
    3. На этом этапе все готово, но нужно сбросить кэш шрифтов. Для этого введите fc-cache -v -r.
    4. Откройте новое окно консоли (новый шрифт или, возможно, даже изменения существующего шрифта не будут отображаться ни в одном из уже открытых вами окон).
    5. Выберите новый шрифт, перейдя в Настройки/Изменить текущий профиль и выбрав вкладку Внешний вид. Параметры выбора шрифта находятся на странице настроек. Нажмите Выбрать шрифт..., и вы должны увидеть свой новый шрифт в списке и иметь возможность выбрать его. Изменение вступит в силу сразу после нажатия кнопки ОК.
    6. Поздравляем, вы закончили! Если линии все еще слишком далеко друг от друга или слишком близко, вернитесь к шагу 7 и подправьте значения HHead Ascent/Descent на другие кратные их оригиналам. Не забудьте изменить (все три) значения имени шрифта, чтобы они описывали процент, на который вы умножаете, для будущего использования, а затем обязательно сохраните шрифт под новым именем файла (и сгенерируйте его как новый шрифт под новым именем). Наконец, не забудьте обновить кэш шрифта и открыть новое окно, чтобы увидеть эффект(ы).

Обычно я использую ls -lor ls -lRперед изменением шрифта в Konsole, чтобы увидеть эффект на межстрочный интервал между перечисленными именами файлов. Хорошей идеей будет иметь имена файлов, которые используют верхние (например, l) и нижние (например, 'y') выносные элементы, которые находятся друг над другом/под другом, так вы можете убедиться, что строки не слишком близки и что верхние и нижние элементы не пересекаются. Вы можете легко сделать это, создав три файла: 'agjpqy','mbdfijlt' и 'zgjpqy'. Первая буква в именах файлов нужна только для того, чтобы упорядочить файлы в алфавитном порядке, как и ожидалось. Остальные буквы содержат верхние, нижние элементы или и то, и другое. Вы можете увидеть, пересекаются ли они, и настроить вертикальный интервал шрифта в соответствии с тем, что вам субъективно нравится (напоминает мне историю о Златовласке и трех медведях).

Надеюсь, это поможет и сэкономит вам кучу времени и разочарований. Пользователи с ОКР оценят это больше всего!

Связанный контент