Консоль 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 отличается и еще одной
особенностью отчетливым различием размера символов латинской и кириллической
составляющей. Что, конечно, полезно для тех, кто не вполне уверенно отличает
русские буквы от английских, но зрительно производит странное впечатление.
Содержание . .