为 xterm、urxvt、emacs 等配置字体

Aks*_*hay 4 fonts terminal

我最近开始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 字体好?有没有办法实现这一目标?

use*_*686 11

  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
    ...
    
    Run Code Online (Sandbox Code Playgroud)
  3. Xresources 常规方式。或者至少,曾经是。例如,您可以使用 为一个程序设置字体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
    
    Run Code Online (Sandbox Code Playgroud)

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