Fonts

urxvt 中的字型渲染問題——字元之間的空間太大

  • September 25, 2015

從今天早些時候開始,我遇到了 rxvt-unicode 的字型渲染問題。特別是對於許多字型,我在字元之間獲得了大量額外的空間。在其他字型中,rxvt 拒絕更改大小。

這是 urxvt 和 xterm 之間的間距問題的範例。

字型資源:

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

還有效果圖

  • urxvt壞字型
  • xterm好字型

我已經嘗試了提示和抗鋸齒的所有排列。更改大小或像素大小確實會調整 urxvt 中的字型大小,但這也會增加額外的間距。

有沒有人有想法我可以嘗試解決這個問題?

事實證明,我的系統上啟用了一條規則,該規則阻止了 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.

Urxvt 有一個基本字距調整選項:letterSpace. 見man urxvt

-letsp number

編譯裝飾:調整計算的字元寬度以控制整體字母間距的量。負值會使字母間距變窄,正值會使字母間距更大。有助於解決奇怪的字型度量;資源字母空間。

因此,您可以通過在 中添加一條線來調整間距~/.Xresources,如下所示:

URxvt.letterSpace: -1

注意:很難從您的第一個螢幕截圖中看出,但看起來 Urxvt 正在回退到預設字型,因為它無法找到或載入 Terminus,因此間距很大。Terminus 是一種點陣圖字型(預設情況下可能禁用),因此您應該使用xfontsel將正確的字型字元串複製到您的定義中。

有關該系統如何工作的詳細描述,請參閱X 邏輯字型描述上的 Arch Wiki 頁面。

引用自:https://unix.stackexchange.com/questions/118641