пятница, 9 сентября 2011 г.

Q&A: Устанавливаем шрифты для виндовой консоли

Ну не нравится мне растровый шрифт в виндовой консоли. Причины: max 256 символов, OEM (кодировка 866 и подобные), топорный вид, режущий глаза. Да, и, консоль в виндах "умеет" Unicode (это про 256 символов и на всякий случай, если кто не в теме :-)).

По умолчанию в свойствах консоли можно выставить 3 шрифта: "Точечный растровый", "Lucida Console" и "Consolas" (от Висты и дальше). Если с первым понятно, то остальные два - векторные моноширинные. Собсна выбор не велик, но Люсида нравилась больше :-)
...нравилась до тех пор, пока не увидел в действии другие векторные шрифты.

Дальше по порядку: сначала "что" - небольшой лекбес, а потом, собственно , "как".

Вводная

Основные требования для консоли в части шрифтов (согласно Q247815): не италик, не иметь отрицательную разрядку для A и C (внятного объяснения не нашел, подозреваю, что это про ширины, sorry), моноширинный (ширина символов - фиксированная). Шрифты TrueType должны быть FF_MODERN, отличные от TrueType - OEM_CHARSET.

С требования определились, смотрим что есть в наличии:

Ставим

  1. "Дропнуть" файл со шрифтом в папку %SystemRoot%\Fonts
  2. Запустить редактор реестра (regedit.exe, etc.)
  3. Перейти в раздел [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont]
  4. Добавить REG_SZ. Имена должны быть из нулей, например, если есть "0", то для нового значения ставим "00"; если есть "00", то, соответственно, "000" и т.д.
    В качестве значения ставим имя шрифта, как он определен в системе (см. [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts], без " (TrueType)", например, для "Liberation Mono (TrueType)" ставим "Liberation Mono")
  5. Перегрузить компьютер (семерка на лету подхватывает изменения)
  6. После перезагрузки лезим в свойства консольного окна и выставляем нужный шрифт и размер.

Например, в системе уже стоят "Lucida Console" и "Consolas", нам нужно добавить "Liberation Mono" (согласно приведенной выше процедуре файл "LiberationMono-Regular.ttf" уже скинули по назначению). Смотрим в реестре, что у нас уже есть "0" и "00", соответственно для нового шрифта делаем "000"="Liberation Mono".
Получается примерно так:
Если потом захотим добавить DejaVu, то делаем "0000"="DejaVu Sans Mono".

Ссылки по теме


PS. Как вы догадались, я ярый приверженец "Liberation Mono" - регулярно обновляется, имеет достаточно полный набор символов.

Комментариев нет:

Отправить комментарий