Пример, как настроить rxvt (аналогично настраивается и xterm). Его настройки (обычно) лежат в файле .Xresources
.
Rxvt.font: -*-salut mono-medium-r-normal-*-16-*-*-*-*-*-iso10646-1,\
-*-salut mono-medium-r-wide-*-16-*-*-*-*-*-iso10646-1
Rxvt.boldFont: -*-salut mono-bold-r-normal-*-16-*-*-*-*-*-iso10646-1,\
-*-salut mono-medium-r-wide-*-16-*-*-*-*-*-iso10646-1
Rxvt.skipBuiltinGlyphs: true
Первые две строчки устанавливают нормальное начертание, следующие две — жирное. Последняя — отключает встроенные в терминал символы рамок (в Salut Mono есть свои нормальные).Как расшифровываются эти строки? Это формат XLFD (погуглите, если интересно), в нём дефисами разделены разные параметры, как то название, жирность (medium/bold), курсивность (R — нормальный, не курсив), относительная ширина (normal — обычная), размер (в пикселях). Звёздочка означает, что параметр не важен.
Все эти обозначения могут зависеть от шрифта. В Xorg есть программка
xfontsel
, которая позволяет интерактивно подобрать обозначение шрифта, и xlsfonts
, выводящая список всех установленных в этом формате.В отношении Salut-mono значение размера может быть 8, 11, 12, 14, 16, 22.
Относительная ширина может быть следующей:
normal — есть у всех размеров.
semiexpanded — есть у размера 14 это размер 14×8.
extended — у 8 и 11, 8×6 и 11×8
wide — у 8, 11, 12 и 16, двойной ширины по сравнению с normal.
Так почему же в качестве шрифта у меня написано сразу два, причём один normal, другой wide?
А потому, что в это только кажется, что в консоли символы моноширинные. На самом деле они могут быть нормальной ширины (занимать одну „ячейку“ — знакоместо) и удвоенной (два знакоместа).
Но шрифт Salut Mono истинно моноширинный, поэтому для символов двойной ширины нужен отдельный шрифт.
Может, я сделаю более изящное решение для этого, но пока так.
С символами двойной ширины типичный европеец скорее всего не столкнётся. Это в основном восточноазиатские иероглифы, слоговые азбуки, а также (почему-то) некоторые технические символы. Кому интересно, что к чему — ищите описание POSIX-функции
wcwidth()
и Unicode® Standard Annex #11. East Asian Width.На картинке кусок скриншота из консольного плеера
moc
с треками на японском языке — на нём катакана в два раза шире латинских букв.