urxvt 中的字体渲染问题——字符之间的空间太大

cas*_*sey 40 fonts urxvt xft

从今天早些时候开始,我遇到了 rxvt-unicode 的字体渲染问题。特别是对于许多字体,我在字符之间获得了大量的额外空间。在其他字体中,rxvt 拒绝更改大小。

这是 urxvt 和 xterm 之间的间距问题的示例。

字体资源:

URxvt*font:     xft:Terminus:medium:size=10
xterm*faceName: xft:Terminus:medium:size=10
Run Code Online (Sandbox Code Playgroud)

还有效果图

  • 虚拟机 坏字体
  • 终端 好字体

我已经尝试了暗示和抗锯齿的所有排列。更改大小或像素大小确实会调整 urxvt 中的字体大小,但这也会增加额外的间距。

有没有人有我可以尝试解决这个问题的想法?

jas*_*yan 20

Urxvt 有一个基本字距调整选项:letterSpace. 见man urxvt

-letsp number
Compile frills:调整计算字符​​宽度以控制整体字母间距的量。负值将收紧字母间距,正值将使字母间隔更多。有助于解决奇怪的字体指标;资源字母空间。

因此,您可以通过在 中添加一条线来调整间距~/.Xresources,如下所示:

URxvt.letterSpace: -1
Run Code Online (Sandbox Code Playgroud)

注意:从你的第一个屏幕截图很难看出,但看起来 Urxvt 正在回退到默认字体,因为它无法找到或加载 Terminus,因此间距很宽。Terminus 是一种位图字体(默认情况下可能禁用),因此您应该使用xfontsel将正确的字体字符串复制到您的定义中。

有关此系统如何工作的详细说明,请参阅X 逻辑字体说明上的 Arch Wiki 页面。

  • 我也有这个问题,发现 `urxvt -letsp -2` 对我来说是必要的。使用 `-1` 更好,但我最初没有意识到,因为这还不够。 (3认同)

cas*_*sey 7

事实证明,我的系统上启用了一条规则,该规则阻止了 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>
Run Code Online (Sandbox Code Playgroud)

我从conf.d目录中删除了它,我的字体再次在urxvt.


bal*_*alu 5

请注意,有一个关于字母间距的错误报告

我有类似的问题。按照错误讨论的建议,我设置了Xft.rgba: noneand Xft.hintstyle: hintfullin ~/.Xdefaults(而不是Xft.rgba: rgband Xft.hintstyle: hintslight)。这为我修复了它——不过,我使用 Ubuntu Mono 作为字体。


b3h*_*0th 5

我的解决方案很简单:

URxvt*font:     xft:mono:medium:size=10
xterm*faceName: xft:mono:medium:size=10
Run Code Online (Sandbox Code Playgroud)

现在它工作得很好。