使用 .Xresources 时如何将字体路径添加到 urxvt?

使用 .Xresources 时如何将字体路径添加到 urxvt?

使用 xset +fp /usr/share/fonts/terminus 我可以随后使用以下命令启动 urxvt 并获得对我想要的字体(终端)的支持:

urxvt -fn -*-terminus-*-*-*-*-*-*-*-*-*-*-*-*

然而,这在 .Xresources 中是如何完成的呢?如何指定 .Xresources 中字体的缩放方式?

这是一个Gentoo 系统。

简单地尝试以下似乎不起作用:

URxvt*font: xft:terminus:pixelsize=26

据我了解 urxvt 使用两种字体系统,XLFD 和 Fontconfig。以下链接https://wiki.gentoo.org/wiki/Rxvt-unicode#Font试图解释其中的一些内容。然而,即使我逐字复制他们提供的示例,它似乎对 urxvt 实际使用的字体没有任何影响。

我相信它使用默认字体,这在我的系统上看起来很糟糕。

我试图寻找 urxvt 的调试和详细标志,但它的手册页没有列出任何标志。问题是,即使从另一个终端启动 urxvt,urxvt 也不会给出任何有关它尝试的字体以及尝试在何处查找字体的反馈。

我尝试过 fc-list 来列出可用的字体。但是,我不清楚这是否列出了可与 XLFD 或 Fontconfig 一起使用的字体。尽管如此,我随机尝试了一些,仍然没有任何反应。

答案1

正如评论中所述,如果您使用.Xresources,您应该运行

xrdb -merge ~/.Xresources

更改文件后。或者,您可以进行编辑~/.Xdefaults(但坚持使用的人xrdb建议不要这样做)。

无论哪种方式,你的资源模式都适合我,就像这样

urxvt -fn 'xft:terminus:pixelsize=20'

(通配符对我不起作用)。使用strace,我可以看到在查找“Term”或“term”时打开了哪些文件;您可能会发现它作为调试功能很有用:

execve("/usr/bin/urxvt", ["urxvt", "-fn", "xft:terminus:pixelsize=25"], [/* 61 vars */]) = 0
read(7, "#! perl\n\nuse POSIX ();\n\nmy $term"..., 8192) = 1223
access("/etc/fonts/conf.d/50-enable-terminus.conf", R_OK) = 0
stat("/etc/fonts/conf.d/50-enable-terminus.conf", {st_mode=S_IFREG|0644, st_size=254, ...}) = 0
open("/etc/fonts/conf.d/50-enable-terminus.conf", O_RDONLY) = 9
open("/users/tom/.icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/pixmaps/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/users/tom/.icons/oxy-black/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/oxy-black/cursors/xterm", O_RDONLY) = 7
open("/var/run/utmp", O_RDWR|O_CLOEXEC) = -1 EACCES (Permission denied)
read(7, "/usr/build/xterm/xterm-325f (101"..., 2048) = 34
chown("/dev/pts/3", 0, 0)               = -1 EPERM (Operation not permitted)

包含字体信息的文件是

/etc/fonts/conf.d/50-enable-terminus.conf

其中(在我的系统上)包含以下内容:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <selectfont>
    <acceptfont>
      <pattern>
        <patelt name="family"><string>terminus</string></patelt>
      </pattern>
    </acceptfont>
  </selectfont>
</fontconfig>

urxvt对于给定的字体。它设置对 fontconfig 的调用(通过 Keith Packard 编写的 Xft 库)。您可以阅读源代码urxvt并了解它是如何做到这一点的:

Xft 与 fontconfig 的显着(错误)功能之一是它缺乏错误报告。如果找不到您需要的字体因为,它将继续为您提供默认字体。使用strace,您至少可以看到使用了正确的字体配置文件。

相关内容