Консоль FreeBSD. Шрифтовые украшательства

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

Действительно, шрифты, входящие в комплект FreeBSD и устанавливаемые по
умолчанию в процессе инсталляции, весьма далеки от эстетического идеала (да и
от элементарной эргономики), особенно в кириллической своей части. И поменять
их -- дело святое. Однако сначала посмотрим, какие они бывают, консольные
шрифты.

Все штатные шрифты для консоли FreeBSD хранятся в каталоге
/usr/share/syscons/fonts и имеют имена вида cp850-8x14.fnt, cp850-8x16.fnt, cp850-8x8.fnt. Первая часть имени (в данном случае cp850) соответствует кодировке (вернее, набору символов) шрифта и определяет его семейство -- гарнитуру, если это слово здесь уместно. Вторая же часть (8x14 и т.д.) - указание на размер шрифта, его с позволения сказать, "кегль", хотя вот здесь-то смысл явно другой. Действительно, под размером шрифта в данном случае понимается матрица из точек по горизонтали и вертикали, а не его
измерение в каких-либо типографских единицах. Тем не менее дальше я буду
использовать как бы типографские термины, не забывая, правда, про кавычки.

Можно видеть, что каждая "гарнитура" экранного шрифта представлена тремя
"кеглями". И в файле /etc/rc.conf одновременно загружается все три шрифтовых файла. Зачем? Каждый из них соответствует группе экранных разрешений, вернее -- плотности символов по вертикали. При видеорежимах с 25 или 30 строками
используется шрифт с матрицей 8x16, с 43-60 строками -- с матрицей 8x8 (матрица 8x14 предназначена для EGA режимА и ныне, судя по всему, сохраняется просто как реликт).

Интересно (вернее, как раз не интересно), что плотность символов
по горизонтали с "кеглем" шрифта никак не связана -- и при 80-, и при 90-, и
при 132-колоночных режимах горизонтальная составляющая матрицы -- 8 точек.
Именно в этом причина крайне уродливого вида экрана в режимах 80x50 и 80x60.

Нас, разумеется, в первую очередь интересуют шрифты с кириллической
составляющей. Они представлены в комплекте для трех кодировок русского языка
- DOS (семейство cp866*), Windows (cp1251*) и Unix (koi8*); для первой и последней, кроме шрифтов русских, имеются и украинские наборы символов.

Далее, DOS- и Unix-наборы символов имеют в старшем, предназначенным для
стандартного разрешения, "кегле" подварианты, именуемые cp866-8x16,
cp866b-8x16, cp866c-8x16 и koi8-r-8x16, koi8-rb-8x16, koi8-rc-8x16, соответственно. Вот они-то, собственно, и представляют собой различные гарнитуры. Шрифт cp866-8x16 -- почти беззасечечный (sans serife), сходный со шрифтами семейства fixed, cp866b-8x16 -- курьерообразный, с засечками, cp866c-8x16 -- весьма причудливая смесь того и другого (аналогичный облик имеют и шрифты для koi'шного набора символов). Кроме того, шрифт cp866c-8x16 имеет несколько другой набор символов псевдографики.

Как уже неоднократно говорилось, для вывода на экран кириллических текстов
во FreeBSD традиционно используются шрифты в кодировке DOS, хотя для ввода с
клавиатуры установлена кодировка KOI8. Настало время объяснить причины этого
явления. Требующего, помимо всего прочего, еще и загрузки таблицы
перекодировки.

Причин этих -- две. Первая кроется в аппаратных особенностях видеосистемы
PC, которые при использовании шрифтов в кодировке KOI8 обуславливают не очень
импозантный вид программ, задействующих символы псевдографики, таких, как
Midnight Commander, текстовый редактор le и ряд других.

Конечно, с пунктирным видом меню и панелей mc можно примириться.
Однако есть и более веская причина: коды, используемые syscons для отрисовки курсора мыши (D0 -- D3), совпадают с кодами нескольких русских букв -- [п,я,р,с], -- в кодировке KOI8 (в DOS-кодировке на этом месте расположены редко используемые символы псевдографики). В результате при активизированной консольной мыши (а без нее, как уже говорилось, работать в консоли было бы скучно) просмотр русских текстов попросту невозможен: указанные буквы пропадают с экрана при любом мышином движении (не для этого ли в vidcontrol придумали возможность отключения курсора мыши?).

В документации проекта FreeBSD для исправления ситуации с мышиным курсором
предлагается пересборка ядра с опцией

options    SC_MOUSE_CHAR=0x3

Это помогает, хотя, как говорят, тоже может вызывать отрицательные побочные эффекты.

Так что, вероятно, использование DOS-кодировки экранных шрифтов во FreeBSD
(вернее, собственно в syscons, для pcvt проблемы с мышиным курсором нет) принудительная сила реальности. И соответственная процедура исполняется на стадии установки (или постинсталляционного конфигурирования) с помощью программы sysinstall. Но установка при этом по умолчанию (и - безальтрнативно) экранного шрифта cp866b-8x16 -- на мой взгляд, не оправдана ничем.

Мало того, что шрифты с засечками -- на мой близоруко-астигматичный взгляд,
вообще не лучший выбор для экрана, для растровых шрифтов эти гарнитуры просто
медицински противопоказаны. Так шрифт cp866b-8x16 отличается и еще одной
особенностью отчетливым различием размера символов латинской и кириллической
составляющей. Что, конечно, полезно для тех, кто не вполне уверенно отличает
русские буквы от английских, но зрительно производит странное впечатление.


Содержание

. .