Проблема візуалізації шрифту в urxvt - занадто багато місця між символами


27

Починаючи з сьогоднішнього дня, у мене виникають проблеми із наданням шрифту з rxvt-unicode. Зокрема, з багатьма шрифтами я отримую багато додаткового простору між символами. В інших шрифтах rxvt відмовляється змінювати розміри.

Ось приклад питання про відстань між urxvt та xterm.

Ресурси шрифтів:

URxvt*font:     xft:Terminus:medium:size=10
xterm*faceName: xft:Terminus:medium:size=10

І візуалізації

  • urxvt погані шрифти
  • xterm хороші шрифти

Я перепробував усі перестановки натяку та антиалізингу. Зміна розміру або розміру пікселів дозволяє змінити розмір шрифту у urxvt, але це також збільшує додатковий інтервал.

Хтось має ідеї, я можу спробувати це виправити?


1
Я не думаю xterm, що насправді використовується один і той же шрифт. І те, Jі 0різницю різняться. Ви можете підтвердити це, використовуючи неіснуючий шрифт у файлі ресурсу ( xterm*faceName: xft:Nosuchfont:medium:size=10). Якщо це все ще виглядає так само, це, очевидно, не Terminus.
золотинок

@goldilocks Здається, ви праві. Urxvt вибирає неправильний шрифт і жахливо виводить його.
Кейсі

1
Я помічав це перед тим, як / gvimколи я використовував мою конфігурацію в системі, де потрібний шрифт не був встановлений. xftабо щось відпадає від немонопростірного шрифту, і ось так вони з’являються.
золотинок

2
@goldilocks Виявляється, неправильне правило fontconfig підключилося під час оновлення та заблокувало доступ усіх доступних шрифтів. Я задумав це, і я повернувся до норми.
кейсі

Відповіді:


15

Urxvt має можливість для основного кернинга: letterSpace. Дивіться man urxvt:

-letsp номер
Компіляція надмірностей: сума, щоб регулювати обчислену ширину символів, щоб контролювати загальний інтервал літер. Негативні значення збільшать відстань між літерами, позитивні значення - пробілами літер більше. Корисно обробляти незвичайні шрифтові метрики; ресурс letterSpace.

Таким чином, ви можете відрегулювати інтервал, додавши рядок до свого ~/.Xresources, наприклад:

URxvt.letterSpace: -1

Примітка: з першого екрану важко сказати, але схоже, що Urxvt повертається до шрифту за замовчуванням, оскільки не може знайти або завантажити Terminus, отже, широкий інтервал. Terminus - це шрифт растрових зображень (який, ймовірно, вимкнено за замовчуванням), тому вам слід xfontselскопіювати правильний рядок шрифту у своє визначення.

Див. Сторінку Arch Wiki на описі X Logical Font для детального опису роботи цієї системи.


3
У мене також було це питання, і я виявив, що urxvt -letsp -2мені це потрібно. Використання -1було краще, але я спочатку не усвідомлював цього, оскільки цього було недостатньо.
Адам Кац

Також ви можете використовувати fc-match <font-name>замість того, xfontselякщо він не встановлений ( font-name - це вираз, вказаний у URxvt*fontназві шрифту рядка). Якщо це відображається зі значенням, що відповідає виразу, шрифт буде завантажено правильно. наприклад, якщо fc-match "Noto Mono"дає, DejaVuSans.ttf: "DejaVu Sans" "Book"то це може вважатися неправильним виразом шрифту.
Avinash R

6

Виявляється, у моїй системі було включено правило, яке блокувало растрові шрифти, такі як Terminus.

Це правило (у моїй системі) було /etc/fonts/conf.d/70-no-bitmap-fontsі містило:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<!-- Reject bitmap fonts -->
 <selectfont>
  <rejectfont>
   <pattern>
     <patelt name="scalable"><bool>false</bool></patelt>
   </pattern>
  </rejectfont>
 </selectfont>
</fontconfig>

Я видалив це з conf.dкаталогу, і мої шрифти знову відображаються належним чином у urxvt.


3

Зауважте, що існує звіт про помилки щодо проміжків літер.

У мене були подібні проблеми. Дотримуючись рекомендацій дискусії про помилки, я встановив Xft.rgba: noneі Xft.hintstyle: hintfullв ~/.Xdefaults(замість Xft.rgba: rgbі Xft.hintstyle: hintslight). Це було виправлено для мене - я використовував Ubuntu Mono як шрифт.


3

Моє рішення було простим:

URxvt*font:     xft:mono:medium:size=10
xterm*faceName: xft:mono:medium:size=10

Зараз це прекрасно працює.


0

Це може виникнути з фактичного файлу шрифту (у моєму випадку Monospace) швидше, ніж із чогось у urxvt. Якщо шрифт (помилково) оголошує деякі гліфи занадто широкими, urxvt також змушений зробити сітку широкою.

У моєму випадку шрифт "OK", який я знайшов, був Bitstream Vera Sans Mono.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.