Заметки о Linux-консоли
7. Шрифтовой терминатор

Алексей Федорчук
[email protected]

В дополнение к заметке об украшении консоли я хочу рассказать о замечательном пакете terminus-fonts, о котором узнал недавно благодаря Kot'у, за что ему большое спасибо. Пакет этот болгарского происхождения и проживает на http в виде архива tar.gz объемом около 100 Кбайт. Его можно найти также в портах FreeBSD и в портежах Gentoo вероятно, и в других местах. Для FreeBSD, в частности, он доступен и в качестве бинарного пакета.

Terminus - не просто шрифтовой набор, а универсальный инструмент для генерации терминальных шрифтов любого назначения. Он включает в себя

  • шрифтовые файлы базовой гарнитуры в формате BDF (Bitmap Distribution Format) нормального и полужирного начертания, высотой от 14 до 24 пикселей, в кодировке Unicode;
  • набор скриптов для преобразования их в шрифтовые файлы различных используемых Unix-консолями и X-терминалами форматов;
  • make-файлы для соответствующих преобразований;
  • необходимые дополнительные данные, в частности, unimap-таблицы для преобразования 8-битных кодировок в Unicode;
  • файлы документации на английском и болгарском языках.

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

  • raw-формат, в котором шрифтовой файл содержит только бинарные данные; этот формат используется для вывода в консольных драйверах BSD-семейства (syscons FreeBSD, pcvt и wscons);
  • psf-формат, включающий, кроме собственно шрифтовых данных, заголовок и psf-сигнатуру с дополнительной информацией о шрифте; это - основной формат вывода в Linux-консоли;
  • pcf-формат для вывода на X-терминалах.

Генерация шрифтовых файлов осуществляется командой make с указанием соответствующей цели, например,

make raw

для создания raw-файлов,

make psf

и

make pcf

для psf- и pcf-форматов, соответственно. Кроме того, командой

make txt

можно сгенерировать smf-таблицы для ряда кодировок. В чем, впрочем, необходимости как будто нет, так как эти таблицы встраиваются, судя по README, в собственно psf-файл.

Каждое шрифтоначертание автоматически генерируется в нескольких кодировках: ISO8859-1/2/5/9/15/16, Windows-1250/1251/1252/1254, IBM-437/852/855/866, KOI8-R/U/E/F, Bulgarian-MIK, Paratype-PT154/PT254 и Macintosh-Ukrainian. Поскольку все шрифты - более чем 500-символьные, для Linux-консоли можно подобрать любые сочетания кодировок ввода и вывода. Правда, для BSD-консоли шрифты с традиционной для нее кодировкой вывода CP866 сами собой не образуются.

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