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实际上并没有使用相同的字体。的J0明显不同。您可以通过在资源文件(xterm*faceName: xft:Nosuchfont:medium:size=10)中使用不存在的字体来确认这一点。如果看起来还是一样,那显然不是终点站。
goldilocks 2014年

@goldilocks看来您是对的。Urxvt选择了错误的字体严重渲染它。
casey 2014年

1
gvim在未安装我想要的字体的系统上使用我的配置时,我已经注意到了这一点。 xft或某些内容落在非等宽字体上,这就是它们的显示方式。
goldilocks 2014年

2
@goldilocks事实证明,更新过程中遗漏了错误的fontconfig规则,并阻止了所有位图字体可用。我把它弄核了,我恢复了正常。
casey 2014年

Answers:


15

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

-letsp数字
编译边角:用于调整计算的字符宽度以控制总体字母间距的量。负值将增加字母间距,正值将使字母间距更大。有助于解决奇数字体指标;资源letterSpace。

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

URxvt.letterSpace: -1

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

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


3
我也遇到了这个问题,发现这urxvt -letsp -2对我来说是必要的。使用-1是更好的方法,但是我还没有意识到,因为这还不够。
亚当·卡兹

另外fc-match <font-name>xfontsel如果未安装,也可以使用代替(font-nameURxvt*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: noneXft.hintstyle: hintfullin ~/.Xdefaults(而不是Xft.rgba: rgband Xft.hintstyle: hintslight)。这为我修复了问题–不过,我使用Ubuntu Mono作为字体。


3

我的解决方案很简单:

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

现在,它可以完美运行了。


0

与urxvt中的任何内容相比,这可能是由实际的字体文件(在我的情况下为Monospace)引起的。如果字体(错误地)声明某些字形太宽,则urxvt也被迫使网格也变宽。

就我而言,我发现的“确定”字体是Bitstream Vera Sans Mono。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.