3

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

Вот пара скриншотов для сравнения.

Xterm:
Xterm рендеринг

Konsole:
рендеринг консолей

Рассматриваемый шрифт - DejaVu Sans Mono 8. Очевидно, оба сглажены. Я даже применил цветовую схему от konsole к xterm, думая, что это может быть причиной различия, но это не так. Кроме того, в konsole у меня включен флажок «Рисовать насыщенные цвета жирным шрифтом», но разница ясна как в жирном, так и в обычном шрифте.

Разница заключается в том, насколько агрессивно каждое приложение сглаживает шрифт. В xterm текст намного более размыт, а также значительно труднее для чтения, по крайней мере для меня. Это, вероятно, наиболее очевидно с символом m , у которого в не выделенной жирным шрифтом первой «ножке» разбито два пикселя в xterm, тогда как в konsole он хорош и четок.

Я получаю одинаковые результаты как для Gentoo, так и для Ubuntu, а также с помощью консервативной установки в /etc/fonts/conf.d на моем ноутбуке Gentoo, а также с помощью комплексной настройки на Ubuntu.

Бонусные баллы, если вы можете выяснить, почему, черт возьми, xterm не отображает некоторые нелатинские символы, хотя я не против этого. Это просто не имеет никакого смысла для меня. Это может быть подсказка, хотя ...

Вот соответствующая часть моей .Xresources:

XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 8
XTerm*background: #000000
XTerm*foreground: #B2B2B2
XTerm*color0:  #000000
XTerm*color1:  #B21818
XTerm*color2:  #18B218
XTerm*color3:  #B26818
XTerm*color4:  #1818B2
XTerm*color5:  #B218B2
XTerm*color6:  #18B2B2
XTerm*color7:  #B2B2B2
XTerm*color8:  #686868
XTerm*color9:  #FF5454
XTerm*color10: #54FF54
XTerm*color11: #FFFF54
XTerm*color12: #5454FF
XTerm*color13: #FF54FF
XTerm*color14: #54FFFF
XTerm*color15: #FFFFFF
XTerm*boldColors: true

Обновление: чтобы уточнить, заставить xterm использовать TTF тривиально; то, что я ищу, - это способ точной настройки способа визуализации TTF в xterm в соответствии с настройками, используемыми konsole (и в значительной степени любым другим приложением X11 в этом отношении). По какой-то причине xterm, кажется, игнорирует все, кроме имени и размера лица шрифта TTF, который я пытаюсь установить, либо в Xresources, либо в моих настройках fontconfig (которые правильно подобраны остальной системой).

3 ответа3

1

В xterm(1) вы можете изменить тип шрифта, удерживая клавишу CTRL и щелкнув правой кнопкой мыши в окне. Я говорю вроде как, потому что у тебя нет большого выбора. Нажав на "TrueType" вариант даст вам результаты ближе к тому, что вы ищете. Вы можете получить больше контроля, отредактировав файл Xresources, как я уверен, что вы знаете - см. Https://wiki.archlinux.org/index.php/Xterm примеры того, как изменить это в соответствии с вашими потребностями.

xterm(1) не отображает большинство нелатинских символов по умолчанию. вы можете использовать опцию -u8 или использовать оболочку uxterm(1)

Попробуйте эту команду, вы можете изменить размер в соответствии с вашими потребностями или пропустить его и щелкнуть правой кнопкой мыши CTRL, чтобы изменить размер шрифта

xterm -u8 -fn 7x13 -fa "DejaVu Sans Mono: размер = 8: antialias = true"

0

Это связано с тем, что приложения GTK и xterm используют совершенно разные способы настройки шрифтов. GTK использует font-config, а xterm/Xft использует ресурсы X.

Чтобы настроить шрифты Xft с использованием ресурсов X, добавьте это в ~/.Xresources:

  Xft.rgba: rgb

Этот параметр изменяет вид сглаживания. Вот примеры XTERM скриншоты , сделанные с xmag без каких - либо настроек RGBA и rgb grb vrgb Все они имеют различную четкость, верность цвета и кажущуюся яркость.

Есть также ручки для Xft.antialias , Xft.hinting , Xft.hintstyle , Xft.lcdfilter и других. Подробности смотрите в документации по fontconfig.

0

Разница в рендеринге, которую вы видите между Konsole и xterm, заключается в настройках подсказок fontconfig. Вы можете сказать, что подсказка включена, если вы сравните формы глифов между двумя скриншотами; в Konsole ноль имеет несколько иную форму, потому что он привязан к пиксельной сетке (что входит в число подсказок шрифтов).

Konsole, вероятно, выбирает настройки из некоторого дополнительного уровня конфигурации KDE, в то время как xterm учитывает только настройки низкоуровневого fontconfig.

Я недавно работал над этим в моей системе Arch, и комбинация настроек, которые наиболее близко повторяют то, что вы видите в Konsole (вставьте это в свою .Xresources):

Xft.antialias: 1
Xft.autohint: 1
Xft.hintstyle: hintslight

Некоторые шрифты содержат информацию подсказок от разработчиков шрифта. Некоторые нет. Автоинтерфейс freetype (Xft.autohint: 1) будет генерировать подсказки для шрифта, а hintslight уровня подсказки будет возвращаться к включенным подсказкам, если они присутствуют. Возможно, стоит попробовать и hintfull ; зависит от ваших предпочтений, плюс качество подсказок, присутствующих в шрифте, который вы используете.

(Вы не используете субпиксельное сглаживание на этих скриншотах, и другой комментатор уже объяснил, как начать использовать его, если хотите.)

Вот мои скриншоты до и после на каждом уровне подсказок. (7pt Anonymous Pro на дисплее 192 точек на дюйм.)

Значения по умолчанию:

Набор символов ASCII с подсказкой по умолчанию

Конфиг выше:

Набор символов ASCII с легкой подсказкой

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .