Одна из первых вещей, которые требуется поменять в свежеустановленной системе - шрифты и раскладки клавиатуры. С предлагаемыми по умолчанию шрифтами обычно имеется несколько проблем: ** шрифт в терминале (здесь и далее под терминалом я подразумеваю "настоящий" терминал, т.е. 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:
Обсуждается: http://www.opennet.dev/tips/info/3205.shtml