从今天早些时候开始,我遇到了 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: -1Run Code Online (Sandbox Code Playgroud)
注意:从你的第一个屏幕截图很难看出,但看起来 Urxvt 正在回退到默认字体,因为它无法找到或加载 Terminus,因此间距很宽。Terminus 是一种位图字体(默认情况下可能禁用),因此您应该使用xfontsel将正确的字体字符串复制到您的定义中。
有关此系统如何工作的详细说明,请参阅X 逻辑字体说明上的 Arch Wiki 页面。
事实证明,我的系统上启用了一条规则,该规则阻止了 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.
我的解决方案很简单:
URxvt*font: xft:mono:medium:size=10
xterm*faceName: xft:mono:medium:size=10
Run Code Online (Sandbox Code Playgroud)
现在它工作得很好。