The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Раздел полезных советов: Настройка шрифтов для консоли и терминала"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Настройка шрифтов для консоли и терминала"  +/
Сообщение от auto_tips (?), 23-Май-22, 11:33 
Одна из первых вещей, которые требуется поменять в свежеустановленной системе - шрифты и раскладки клавиатуры. С предлагаемыми по умолчанию шрифтами обычно имеется несколько проблем:

** шрифт в терминале (здесь и далее под терминалом я подразумеваю "настоящий" терминал, т.е. tty) слишком мелкий.
** эстетика некоторых букв неидеальна.
** шрифт в консоли (а под этим словом я подразумеваю GUI-программу - эмулятор терминала) безобразно гладкий и отличается от шрифта в терминале.
** возможности набирать русские буквы нет, либо же есть, но переключение между языками ужасное.
** в Иксах нет возможности набирать типографские символы (в терминале тоже, но в терминале это не особо нужно, даже для цели написания таких вот текстов).

++ Собственный шрифт в терминале

Первое, что нужно сделать - обзавестись хорошим растровым шрифтом. И если для базовой латиницы таких шрифтов, возможно, несколько (но это не точно), то с учётом кириллицы и юникода выбора вообще не остаётся, и Terminus - это единственный вариант. Так что в этом месте нужно пойти в интернет и раздобыть две вещи: 1) сам Terminus в виде архива '.tar.gz' и 2) веб-страничку этого шрифта, которая содержит важную информацию относительно настраиваемых вариантов некоторых букв и которая, тем не менее, почему-то не входит в тарбол.

Далее следуют привычные и очевидные вещи - распаковка тарбола и изучение readme файла. Ну а далее всё просто. Во-первых нужно определиться с альтернативными начертаниями и применить необходимые патчи (подробности в readme). Далее нужно решить, какой размер и начертание шрифта вам подходит. Я обычно использую 9x18, жирное начертание. Выбранный шрифт можно отредактировать с помощью 'gbdfed'.

Так, в шрифт, которым я пользуюсь прямо сейчас, внесены следующие исправления:
** изменено начертание русско-латинской большой буквы "A", так что она имеет вид, схожий с видом этой буквы в классическом ДОС шрифте,
** изменено начертание кириллического "Ээ оборотного", так что его труднее спутать с "Зз",
** изменено начертание строчной кириллической буквы "б", так как дефолтный вариант имеет не вполне органичный вид для русского языка,
** изменено начертание заглавной буквы "Ф" - она стала более "скромной",
** изменено очертание твёрдого знака - он стал поуже, а палочка, отличающая его от мягкого знака, заметнее,
** изменено очертание буквы "Ыы" опять же по мотивам известного досовского шрифта,
** изменено начертание цифры "3", чтобы не путать её с буквой "З". Соответствующие патчи можно найти [[https://github.com/A1-Triard/XTerminus на гитхабе]].

Выбрав и отредактировав шрифт, переходим к сборке:

   $ ./configure
   $ make

Инсталляция сводится к размещению шрифта в правильном месте.

В линуксах читаем 'man setfont', используем '.psf' файл:

   $ cp ter-u18b.psf xter-u18b.psf
   $ gzip -9 xter-u18b.psf
   # mv xter-u18b.psf.gz /usr/share/kbd/consolefonts
   # chown root:root /usr/share/kbd/consolefonts/xter-u18b.psf
   # chmod u=rw,g=r,o=r /usr/share/kbd/consolefonts/xter-u18b.psf

Во FreeBSD читаем 'man vt' и раздел "Virtual Consoles and Terminals" в Hanbook, и превращаем ".bdf" в ".fnt" с помощью "vtfontcvt":

   $ vtfontcvt -o xter-u18b.fnt ter-u18b.bdf
   # mv xter-u18b.fnt /usr/share/vt/fonts
   # chown root:root /usr/share/vt/fonts/xter-u18b.fnt
   # chmod u=rw,g=r,o=r /usr/share/vt/fonts/xter-u18b.fnt

Осталось указать системе использовать наш шрифт.

Во FreeBSD это делается с помощью настройки "allscreens_flags" в "/etc/rc.conf":

   allscreens_flags="-f xter-u18b"

В линуксах настройка дистроспецифична, точнее она зависит от системы инициализации. В случае systemd это настраивается установкой "FONT" в "/etc/vconsole.conf":

   FONT="xter-u18b"

В случае использования системы инициализации OpenRC, нужная опция называется 'consolefont' и располагается в '/etc/conf.d/consolefont':

   consolefont="xter-u18b"

В Artix с OpenRC надо прописывать шрифт в оба места: и в '/etc/conf.d/consolefont', и дополнительно в '/etc/vconsole.conf' для 'mkinitcpio' (а точнее для хука '/usr/lib/initcpio/install/consolefont').

В Slackware нужно просто вписать вызов 'setfont' с нужными параметрами в '/etc/rc.d/rc.font':

   /usr/bin/setfont xter-u18b

Но если нужно загрузить шрифт так же и в initrd, я не представляю как это можно сделать в Slackware.

++ Шрифт в загрузчике

Если хочется использовать тот же шрифт и в меню загрузчика, вот как это делается для Arch-подобных Linux-дистрибутивов и загрузчика GRUB 2.

1. Шрифт в '.pf2' формате кладётся в '/boot/grub/fonts':

   $ grub-mkfont -o xter-u18b.ps2 ter-u18b.bdf
   # mv xter-u18b.ps2 /boot/grub/fonts

2. Затем шрифт прописывается в '/etc/default/grub':

   GRUB_FONT="/boot/grub/fonts/xter-u18b.pf2"

3. Регенерируется реальный конфиг груба:

   # grub-mkconfig -o /boot/grub/grub.cfg

Всё, можно перезагружаться и проверять результат.

++ Шрифт в консоли

Следующая задача - запихнуть тот же самый шрифт в Иксы, чтобы иметь возможность использовать его в эмуляторе терминала.

Современные иксовые приложения не особенно любят растровые шрифты, особенно в "традиционном" формате '.pcf', поэтому необходимо использовать более "модный" '.otb'. Конвертация проста:

   $ fonttosfnt -o xter-u18b.otb ter-u18b.bdf

Однако, перед этим может быть небесполезным поменять название кастомного шрифта в '.bdf' файле, чтобы если что он не перепутался с оригинальным Terminus.

Запихивать такой шрифт в систему не вполне правильно, да и не нужно: в '~/.local/share/fonts' ему будет вполне комфортно. (В прежние времена для этой цели использовалась '~/.fonts', но в рамках борьбы с загаживанием home dir, фонты переехали в указанное выше место.)

Чтобы Иксы обновили список доступный шрифтов, необходимо позвать 'fc-cache -fv'. Однако очень вероятно, что так сразу шрифт не найдётся. Моё основанное на личном опыте заключение таково: в FreeBSD больше никаких телодвижений не требуется, а вот в Linux скорее всего придётся найти способ включить растровые шрифты.

Правда, способ этот скорее всего весьма универсален: надо просто прочитать '/etc/fonts/conf.d/README', и, прочитав, обратить внимание на файлы с названиями '70-yes-bitmaps.conf' и '70-no-botmaps.conf' в '/etc/fonts/conf.d' и '/usr/share/fontconfig/conf.avail' (последняя директория может располагаться и в ином месте, но 'locate conf.avail' должен справиться с поиском).

Дальнейшие действия очевидны: отключить отключение растровых шрифтов путём удаления линка на файл '70-no-botmaps.conf' и включить включение растровых шрифтов путём создания линка на '70-yes-bitmaps.conf'. Этого должно быть достаточно, чтобы 'fc-cache -fv' нашёл-таки наш шрифт, после чего (Иксы лучше перезапустить) наш кастомный шрифт будет можно выбрать в настройках программы - эмулятора терминала.

Продолжение следует...


URL:
Обсуждается: https://www.opennet.ru/tips/info/3205.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Simple PING deviceemail (?), 23-Май-22, 11:33   +6 +/
Хотелось бы скриншоты посмотреть типа: было-стало.
Тоже использую Терминус для терминала.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #22

2. Сообщение от Sequlariseemail (?), 23-Май-22, 14:55   +/
без kmscon особого смысла всё это не имеет кмк
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12, #13

3. Сообщение от Аноним (-), 24-Май-22, 18:47   +/
В кои то веки - полезный совет на опеннете. Правда freebsd и linux можно было бы и в отдельные разделы запихнуть наверное.

Кроме того - было бы интересно узнать:
1) А есть программы для конверсии grub'овского pf2 в другие форматы?

2) конверторы psf в otb/bdf/...?

3) А этот setfont с его что-то там про какой-то VGA точно применим к kms'ной консоли?

4) Что насчет вяленда и того что под ним крутится?

5) А есть какие-нибудь прикольные битмапные шрифты? Можно без русского в консоли.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

4. Сообщение от john_erohin (?), 25-Май-22, 08:08   +1 +/
в debian-based (и возможно rpm-based) я бы не ковырялся с .tar.gz, а поставил готовый пакет терминуса и переписал файл шрифта поверх.

> в консоли (а под этим словом я подразумеваю GUI-программу
> - эмулятор терминала)

а под словом "белое" я подразумеваю "черное".

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #5

5. Сообщение от Аноним (-), 26-Май-22, 03:33   +/
Он там уродский: "l" от "1" и "I" почти не отличить. Не годится как програмерский или консольный фонт вообще совсем.

А в оригинале таки патчи дают, применяется к bdf, фиксит этот булшит. Есть пара форков как оказалось, типа https://github.com/neutaaaaan/termingus где это уже сделано "за вас".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

6. Сообщение от Аноним (-), 26-Май-22, 03:45   +/
Сам спросил сам отвечу...
> 2) конверторы psf в otb/bdf/...?

1) В _свежем_ (это важно) hxtools есть странная штука vfontas. В старых умеет полтора формата и уныл. В последней версии однако умеет конверсию в чуть ли не дюжину битмапных фонтов в две стороны. Командлайн странноват но работает на ура.
2) Кто бы мог подумать но psftools. Правда их минимум двое разных. Те которые опакечены в федоре ака https://www.seasip.info/Unix/PSF умеют довольно много конверсий в обе стороны разных форматов битмапных фонтов.
3) Есть gbdfed, простой и не слишком жирный редактор битмапных шрифтов, предпочитает BDF но умеет импорт-экспорт в разные форматы.
4) Формат psf столь прост что я был бы крайне позорным сишником если б не смог накодить себе конвертер PSF -> any.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3

7. Сообщение от Аноним (7), 26-Май-22, 11:24   +/
А почему никто в ядро нужный шрифт не вкомпиливает? Там вроде можно и некоторые шрифты уже есть...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24

8. Сообщение от Тот Самый (?), 26-Май-22, 22:40   +1 +/
> 19.05.2022 , Автор: Warlock
>Первое, что нужно сделать - обзавестись хорошим растровым шрифтом
>Следующая задача - запихнуть тот же самый шрифт в Иксы

Растровый шрифт в десктопном терминале в 2022 году - это не шутка?
На дворе уже 21 век. Любой современный терминал поддерживает векторные шрифты (ttf, otf) с нативным сзлаживанием и хинтингом. А уж по поводу выбора - пол-интернета завалено свободными ttf с любыми гарнитурами, плотностями и спецсимволами.

ИМХО, статья из серии "Байки из склепа"

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #18, #25

9. Сообщение от Тот Самый (?), 26-Май-22, 22:52   +/
Еще добавлю.
Лучший способ стать буквально "краснoглазым" - это испортить себе зрение растровыми шрифтами.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #15

10. Сообщение от Аноним (10), 27-Май-22, 02:28   +3 +/
Вот тут друзья мы и наблюдаем основной недостаток Linux систем и достоинство FreeBSD. FreeBSD - четко, лаконично и понятно. Linux - вот тут так, а вот тут так, ну а вот тут так не получится, а вот здесь вообще то наверное можно но как не известно,...
Как только на FreeBSD появится вменяемая поддержка современного железа, сбегу от Linux как от огня, ибо хочется пользоваться целостной системой, а не ворохом костылей, да горой подпорок, которые ещё и разные в каждом дистрибутиве.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #11, #14, #17, #26

11. Сообщение от Дворник (??), 28-Май-22, 00:26   +1 +/
Не нравится свобода? Есть ещё дистрибутивы типа NixOS, но там головой работать надобно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

12. Сообщение от Аноним (12), 28-Май-22, 01:08   +/
Что-этот kmscon болт кладёт на указание ему размера шрифта. Отображает чуть более, чем микроскопический шрифт.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #16

13. Сообщение от Аноним (12), 28-Май-22, 01:10   +/
И как в нём консольную мышь завести?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

14. Сообщение от Аноним (12), 28-Май-22, 01:15   +/
>Как только на FreeBSD появится вменяемая поддержка современного железа

Поддержка железа 2022 года там появится... году эдак к 2032-му.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

15. Сообщение от Аноним (-), 28-Май-22, 10:05   +3 +/
Они вообще-то обычно идеально четкие и если деланы не тормозом - с хорошо различимыми символами. Что дает им 10 очков форы в плане читаемости. А бонусом еще и рендер сильно быстрее. Как угодно но вектор идеально зарендерить попиксельно отдельный трабл и придумано более 9000 костылей, которые вот-вот уже приближают, но все же купите HiDpi монитор, дескать, чтобы глаза не вытекали от мазни. Это конечно 3.14здатый способ продажи толкать, но к сохранности глаз отношения не имеет.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #32

16. Сообщение от Аноним (-), 28-Май-22, 10:07   +/
> Что-этот kmscon болт кладёт на указание ему размера шрифта. Отображает чуть более,
> чем микроскопический шрифт.

У расторвого шрифта размер один - тот в котором он отрисован. Возможно стоило взять более крупный шрифт?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12 Ответы: #23

17. Сообщение от Аноним (-), 28-Май-22, 10:09   –1 +/
> Вот тут друзья мы и наблюдаем основной недостаток Linux систем и достоинство
> FreeBSD. FreeBSD - четко, лаконично и понятно. Linux - вот тут
> так, а вот тут так, ну а вот тут так не получится, а вот здесь вообще то наверное
> можно но как не известно,...

Проблемы начинаются когда надо что-то чего концептуалы из BSD не предусмотрели. При этом система начинает со всей ее стройностью активно строить юзера как надо - системе и ее разработчикам. А не пользователю. Фича становится багом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

18. Сообщение от Аноним (-), 28-Май-22, 10:14   +/
Есть парочка нюансов, в случае если удалось подобрать прикалывающий растровый фонт:
1) Это многократно быстрее рендерится, не убивая сотни проца на аниталиасинг и проч. Если в терминал валится много, например компил кернела - это аргумент. Не прикольно когда ядро мощного проца занято ... нет, не компилом - рендером фонтов с прогрессом.

2) Это лучше выглядит. Кристально четкий фонт. Всегда. Безусловно. На всех символах. С попиксельной точностью, гарантированное отсутствие мазни. Ну кроме самых мелких фонтов на HiDPI конечно, башкой надо соображать насчет размера пиксела и их числа. А TTF с всем их кернингом, хинтингом, субпиксельным сглаживанием и проч - пыжится выглядеть не сильно хуже, но с попиксельно раскиданным рендером это все же не сравнится.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8 Ответы: #19, #20, #21

19. Сообщение от Тот Самый (?), 28-Май-22, 11:51   +4 +/
>Это многократно быстрее рендерится, не убивая сотни проца на аниталиасинг и проч

1) Обсчет векторных шрифтов требует операций с плавающей точкой. На 386-м процессоре без математического сопроцессора разница в скорости рендеринга будет действительно заметной.
А если вернуться в 21 век, то нет ни одного видеоускорителя, который бы не умел рендерить ttf-ы аппаратно на GPU (видео драйверы надо настраивать, а не растровые шрифты вкрячивать через ж@пу)
>Кристально четкий фонт. Всегда. Безусловно

2) Не правда! Все растровые шрифты сделаны исключительно под физическое разрешение матрицы 96 DPI. В 2022 году типовое разрешение экранов 1920х1080. Для этого разрешения у ноутбуков с экраном 13 - 15 дюймов используются матрицы 178 - 144 DPI.
А вот, например, у монитора с диагональю 27 дюймов с разрешением 1920х1080 матрица всего 72 DPI. Поставь на такой монитор растровые шрифты, полюбуйся на "кристально четкий фонт", а через год минус одна диоптрия зрения тебе гарантирована

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

20. Сообщение от Тот Самый (?), 28-Май-22, 12:14   –1 +/
Этот спор совершенно бесполезный (я знаю, что отдельные растровые шрифты сделаны и под 72, и под 100 DPI). Кто хочет жрать кактус, того не переубедишь

Очень жалко глаза молодежи, которая поведется на такие вот "советы" бывалых

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18

21. Сообщение от Аноним (21), 30-Май-22, 16:24   +/
> С попиксельной точностью,

Вы возможно не в курсе, но антиалиасинг дает сабпиксельную точность. В смысле что сабпиксельный рендеринг (называйте его cleartype или как угодно) имеет горизонтальное разрешение (ну или вертикальное на некоторых матрицах) в 1/3 пикселя. И вы не получите такой же детализации с обычным "попиксельным" рендерингом.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #31

22. Сообщение от Ooiiii (?), 01-Июн-22, 23:56   +/
Стало https://postimg.cc/4Y36LwpZ
Было хреново, скринов нет
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #28

23. Сообщение от Аноним (23), 06-Июн-22, 13:37   +/
Справедливости ради можно растровый битмап смаштабировать в x2, x3, x4 и т.д. количество раз,
так что конечно сделать какой-то конкретный размер сложно, но вот кратно отмасштабировать вполне возможно.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #16

24. Сообщение от Аноним (23), 06-Июн-22, 13:39   +/
> А почему никто в ядро нужный шрифт не вкомпиливает? Там вроде можно
> и некоторые шрифты уже есть...

Экономят на случай если ядро будут собирать например для безмониторных системах,
а и потом сколько языков и шрифтов необходимо и достаточно что бы все были счастливы?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7

25. Сообщение от Аноним (23), 06-Июн-22, 13:44   +/

> На дворе уже 21 век. Любой современный терминал поддерживает векторные шрифты (ttf,
> otf) с нативным сзлаживанием и хинтингом. А уж по поводу выбора
> - пол-интернета завалено свободными ttf с любыми гарнитурами, плотностями и спецсимволами.

Тоталитаризм из стиля "все должны испольолвать TTF, так как я считаю, что это лучше".

Мне нравиться растровые и TTF шрифты. Я большой фанат шрифта 9x15 и он отлично работал и работает на всех моих конфигах. Мне приятно глазу видеть точки этого шрифта.

Размазынне шрифты с cleartype действительно приятные, но вызывают меньше приятных ощущений.

Я все это к тому, что придумать можно любую ерунду, но вот разрешить выбирать использовать ее или нет нужно всетаки за пользователем. Именно по этому и появился скажем Linux

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

26. Сообщение от Аноним (23), 06-Июн-22, 13:47   +/
> Вот тут друзья мы и наблюдаем основной недостаток Linux систем и достоинство
> FreeBSD. FreeBSD - четко, лаконично и понятно. Linux - вот тут
> так, а вот тут так, ну а вот тут так не
> получится, а вот здесь вообще то наверное можно но как не
> известно,...
> Как только на FreeBSD появится вменяемая поддержка современного железа, сбегу от Linux
> как от огня, ибо хочется пользоваться целостной системой, а не ворохом
> костылей, да горой подпорок, которые ещё и разные в каждом дистрибутиве.

У тебя как-то достоинство и недостаток в одном флаконе. Наличие дистрибутивов это и есть достоинство что люди изучают и доделывают (а вот с FreeBSD вектор тащат только сам Беркли)

Я к тому, что популярность наверное и стала причиной уймы разновидностей дистрибутивов,
а это и породило разные варианты выбора. В тоже время непопулярность (а как следствие отсутствеи поддержкит современного железа) вот как-то так

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #10

27. Сообщение от abu (?), 07-Июн-22, 11:27   +/
Terminus хорош, но не единственный. Есть JetBrains Mono, например.

В целом же статья понравилась, как минимум, увидел в ней попытки к доходчивости и старанию. Спасибо!

Ответить | Правка | Наверх | Cообщить модератору

28. Сообщение от www2 (??), 08-Июн-22, 08:48   +1 +/
В статье столько всего написано про доработку начертаний кириллицы, а на снимке одно слово на кириллице - "записано".
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #29

29. Сообщение от Ooiiii (?), 08-Июн-22, 18:09   +/
Никаких манипуляций с кириллицей не производил, меня стандартная устроила. Она ничем не хуже латиницы. Делал не по статье. В config.h поставить нужно правильное значение шрифта из xfontsel, главное со всеми числами, иначе он в ширину расползется.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #28 Ответы: #30

30. Сообщение от Ooiiii (?), 08-Июн-22, 18:18   +/
https://postimg.cc/Vr91sNNX
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

31. Сообщение от Crazy Alex (ok), 24-Июн-22, 10:10   +/
Угу. Ценой потери резкости границ. Но блюр всех победил уже...
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

32. Сообщение от Crazy Alex (ok), 24-Июн-22, 10:16   +/
Насчёт чёткости согласен, но вот что до нагрузки... Ну вот плевать мне, 0.00001% мощности будет потрачен или 0.001. По нынешним временам - абсолютно незначимо, сколько оно там ест.

Но, кстати, действительно HiDPI (причём сильно не всякий) - единственный способ получить шрифт, сравнимый каечеством с печатным. Лесенка - оно, конечно, лучше блура - но тоже далеко не идеал.

Я, впрочем, просто отломал антиалиансинги с автохинтингами и просто сижу на старых шрифатх от MS, но в терминале - всё тот же Terminus - так жить можно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру