为 xterm、urxvt、emacs 和其他程序配置字体

为 xterm、urxvt、emacs 和其他程序配置字体

我最近开始使用它xmonad作为我的窗口管理器。我还决定使用它urxvt作为默认终端,因为它应该是轻量级的。

大多数提供字体配置选项的应用程序都允许我选择字体(例如 Arial、Consolas、FreeMono、Dejavu Sans 等),并以像素为单位设置大小(11px、12px 或其他)。这很容易理解。

现在,当尝试为 xterm、urxvt 和 emacs 等应用程序设置字体时,我必须想出一个相当奇怪的字符串,看起来像: "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*""-unknown-DejaVu Sans Mono-normal-normal-normal-*-14-*-*-*-m-0-iso10646-1"

我曾使用该xfontsel程序通过反复试验来生成此结果。但我并不真正理解它的含义,也不明白为什么需要这样做。

此外,我还使用过类似这样的东西: URxvt.font: 9x15bold

我的问题:

  • 用于配置字体的奇怪的长字符串是什么?
  • 类似这样的东西是什么9x15bold意思?它们是如何结合在一起的?
  • 为什么不像大多数其他应用程序那样坚持使用传统的字体设置方式呢?
  • 为什么 xterm 和 urxvt 字体看起来不如 gnome-terminal 字体好看?有什么方法可以实现吗?

答案1

  1. 这是一个X 逻辑字体描述,主要由纯 Xlib 程序使用。

  2. 9x15bold” 是位图字体这是 X.org 附带的。它没有任何具体含义,只有一个“fonts.alias”表将其转换为 XLFD:

    ! $Xorg: fonts.alias,v 1.3 2000/08/21 16:42:31 coskrey Exp $
    fixed        -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
    variable     -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-1
    5x7          -misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-1
    ...
    8x16         -sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1
    9x15         -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
    9x15bold     -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1
    10x20        -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1
    ...
    
  3. 交叉资源 传统方式。或者至少曾经是。例如,可以使用 为一个程序设置字体URxvt.font,或者使用 为所有程序设置字体*font,这将影响所有程序 - 甚至包括在远程服务器上运行的程序。(X11 是一种网络协议。)

    大多数新编写的程序都使用 GNOME 中的 dconf 等系统,这很好,因为它们是专门为 GNOME 编写的。然而,Xterm 与桌面环境无关,因为——最重要的是——它是在 KDE 和 GNOME 以及 Qt 和 GTK 之前创建的;它是核心 X11 软件套件的一部分。因此它坚持使用 Xresources,因为它简单而标准,不依赖第三方库或服务。(当然,它也有缺点,例如缺乏实时重新配置。)

  4. Xterm 是一个纯 Xlib 程序,使用 X11 提供的字体渲染,而用 GTK 编写的 GNOME Terminal 使用 Freetype(通过 Pango)。

    但是,Xterm 和 URxvt 的最新版本支持通过 Xft 渲染基本的 Freetype 字体(功能比 Pango 少,例如缺少字体回退,但通常“足够好”)。您可以通过添加以下资源来使用它:

    URxvt.font: xft:DejaVu Sans Mono:size=9
    
    XTerm*faceName: DejaVu Sans Mono
    XTerm*faceSize: 9
    

    字体大小以点为单位(而不是像素)。

相关内容