Консоль FreeBSD. Шрифтовые эксперименты
Все мои столь пространные рассуждения призваны были обосновать нехитрый
тезис -- с экранными шрифтами можно и нужно экспериментировать. Возможности
для чего предоставляет все та же программа vidcontrol
. Для загрузки некоего интересующего нас шрифта ее следует вызвать в форме
vidcontrol -f типоразмер_шрифта имя_шрифтового_файла
Например, командой
vidcontrol -f 8x16 /usr/share/syscons/fonts/cp866-8x16.fnt
будет загружен шрифт cp866-8x16
с соответствующей матрицей -- на мой
взгляд, оптимальный выбор в рамках штатного комплекта, как с точки зрения
эстетики, так и эргономики. При этом необходимости в полном пути к шрифтовому
файлу нет, если он хранится в стандартном каталоге (именно том, который
указан в примере).
Если результат экспериментов устроил -- его можно увековечить для постоянного
использования редактированием файла /etc/rc.conf
, заменив строку
font8x16="cp866b-8x16"
на
font8x16="cp866-8x16"
Строки для остальных двух шрифтов, разумеется, трогать ни к чему -- их
можно просто закрыть комментариями, если не предполагается использование
разрешений выше 80x30.
К сожалению, выбор консольных шрифтов во FreeBSD небогат. Так, он не идет ни в какое сравнение с наборами кириллических консольных шрифтов в современных дистрибутивах Linux. Не удалось мне отыскать дополнительных шрифтов и в Сети. Однако и тут можно найти выход -- конвертировать консольные шрифты для Linux в формат FreeBSD. Для этого первый следует сначала разархивировать (в Linux шрифты
хранятся в виде gzip-архивов)
$gzip font.psf.gz
а затем преобразовать следующей командой:
$dd if=linux_font.psf of=bsd_font.fnt bs=1 skip=4 count=4096
где значение count
приведено для шрифта стандартного (80x25) разрешения с матрицей 8x16. Однако теоретически можно сделать и шрифт для высокого
разрешения -- 8x8. А если исходный шрифт -- Unicode (а в дистрибутивах Linux
есть и такие), то, вычислив смещение, можно изготовить шрифты в любой
кириллической кодировке.
Ведь в консоли FreeBSD при желании и необходимости есть возможность
подгружать и шрифты в Windows-кодировке (благо таковые в комплекте поставки
имеются). Однако тут следует иметь в виду два обстоятельства. Во-первых,
внешний вид программ, использующих псевдографику, будет просто никакой. А
во-вторых (и главных) смена экранного шрифта средствами vidcontrol
действует одновременно (и имеет обратную силу) для всех виртуальных консолей. И если на них ранее были выведены какие-либо кириллические тексты, они тут же утратят
читабельность. Которая, впрочем, восстановится после повторной загрузки
шрифта в DOS-кодировке, и потому в качестве временной меры (необходимости
срочно прочитать письмо в cp1251
, например) такое действие приемлемо. Если же необходимость работать с документами с cp1251
возникает постоянно, потребуется также соответствующая клавиатурная раскладка (о чем -- ниже) и,
вероятно, таблица перекодировки -- т.н. screenmap
, -- для трансляции
Windows-кодов, вводимых с клавиатуры, в DOS-коды экранных шрифтов. Последнее
все же более простое решение, чем тотальная замена шрифтов.
С слову сказать, загрузка таблицы перекодировки -- также прерогатива программы vidcontrol
. Делается это таким образом:
$vidcontrol -l имя_файла_screenmap
Файлы таблиц перекодировок можно найти в каталоге /usr/share/syscons/scrnmaps/
. Из интересующих нас там имеется только koi8-r2cp866.scm
(и ее украинский вариант -- koi8-u2cp866u.scm
) для трансляции клавиатурной раскладки KOI8 в шрифты DOS-кодировки. Так что при необходимости ввода Windows-кодов такую таблицу придется изготовить самостоятельно. Ну а чтобы отказаться от какой-либо перекодировки, в том числе и подгруженной
через /etc/rc.conf
, потребуется команда
$vidcontrol -L
Впрочем, существует и другое решение проблемы одновременной работы с
разными кодировками, о котором я расскажу в свое время.
Содержание . .