X11/字体指南
当您的 X11 客户端绘制文本时,它们使用字体,这是标准字符(例如字母、数字和标点符号)的图形。至少,字体是一种字形(也称为族),例如Bitstream Vera Sans、Luxi Mono、Nimbus Roman No9 L 或 fixed。更具体地说,字体包括大小或样式,例如Bitstream Vera Sans Bold Italic 10 点。字体也有三种类别,称为衬线(如 Nimbus Roman No9 L)、无衬线(如 Bitstream Vera Sans)和等宽(如 Luxi Mono 或“fixed”)。
字体有多种字体格式,例如位图、TrueType 和 PostScript。TrueType 字体是.ttf文件。如果 X11 服务器和客户端位于不同的计算机上,那么您可能在每台计算机上安装了不同的字体。
X11 客户端可以通过多种不同的方式绘制文本
- 使用原始核心 X11 协议绘制文本。 使用这种方法,X11 服务器会加载并存储字体的每个字符。因此,如果 X11 服务器(带有屏幕和键盘)和 X11 客户端(带有您的 Web 浏览器或其他窗口)位于不同的计算机上,那么您必须在服务器上安装字体。服务器会将字符转换为位图并直立绘制它们,这意味着您无法旋转它们。此外,服务器从不为字体提供抗锯齿功能。
- 使用 Xft 库和 RENDER 扩展绘制文本。 使用这种方法,X11 客户端会加载并存储字体的每个字符。您必须在客户端机器上安装字体。客户端会将字符转换为几何图形。它将图形分解为基本的形状,例如三角形和梯形,然后将它们发送到服务器。服务器绘制图形,并可以选择提供抗锯齿功能,从而使字体的外观更平滑。也可以旋转这些图形。
- 使用客户端库(例如 libart_lgpl 或 SDL_ttf)绘制文本。 虽然 libart_lgpl 是一个矢量图形库,但 SDL_ttf 是一个库,用于为使用跨平台简单直接媒体层 (Simple DirectMedia Layer) 的程序绘制文本。通常,这些库会加载几何图形,然后将它们绘制到位图中,可能会进行抗锯齿和旋转,然后再将其发送到 X11 服务器,就好像 X11 服务器对文本一无所知一样。这些库也可以像 Xft 一样使用 RENDER。
第一个 X11 客户端使用核心 X11 协议绘制文本,因为这是唯一的选择。但是,现在有几个客户端使用 Xft。由于 GTK+ 和 Qt(几个应用程序背后的工具包,包括所有 GNOME 和 KDE 应用程序)切换到 Xft,因此许多桌面上的程序(包括 Konqueror)现在使用 Xft。
较旧的 Xft 版本 1 有自己的配置方案。这里描述的版本 2 使用fontconfig 进行配置。由于 fontconfig 独立于 X11,因此有像fc-list 这样的程序可以列出 X11 程序(如 Konqueror)可用的字体,但它们本身不使用 X11。一个简单的终端命令来列出可用字体是
$ fc-list | sort | less
默认的/etc/fonts/fonts.conf允许您选择性地创建一个自定义文件~/.fonts.conf用于您的自定义字体设置。
一些自定义包括
- 您可以添加包含字体的其他目录。fontconfig 会递归地搜索目录。如果您有一个包含.ttf文件的文件夹,那么您只需将其添加到~/.fonts.conf中;您无需为 fontconfig 写一个fonts.scale或任何其他此类文件。
- 您可以指定要搜索的额外字体,以查找模糊的字符。如果您没有看到引号之间 "→" 的右箭头,那么在搜索用于绘制此句子的字符时没有找到右箭头字符。事实上,与 Xorg 一起包含的 Bitstream 和 Luxi 字体以及来自 ghostscript 的 Nimbus 字体没有该字符,但来自 ghostscript 的“Standard Symbols L”字体包含一个右箭头。
但是,~/.fonts.conf使用严格的 XML 语法。您必须在文件开头声明<?xml version="1.0"?>,并且您必须将文件中的所有其他内容放在<fontconfig>和</fontconfig>标签之间,否则它将无法工作。
这是一个示例文件,展示了如何执行这两个自定义
<?xml version="1.0"?><fontconfig> <dir>/usr/local/share/ghostscript/fonts</dir> <alias> <family>sans-serif</family> <prefer><family>Standard Symbols L</family></prefer> </alias> <alias> <family>serif</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> </fontconfig>
添加字体目录很简单:使用<dir>/完整/路径</dir>。上面的示例添加了/usr/local/share/ghostscript/fonts,它在某些计算机上是 Ghostscript 字体的所在位置,包括 Standard Symbols L。
要将 Standard Symbols L 添加到首选字体列表中,以便我们始终可以绘制右箭头 "→",则更为困难。假设您已将 Konqueror Web 浏览器设置为使用 Luxi Serif 来显示网页。然后,您加载了一些包含一些右箭头的文本。当 fontconfig 未能在 Luxi Serif 字体中找到右箭头时,它转向了通用字体名称 "serif",它实际上是首选衬线字体的列表的别名。
作为参考,以下是在/etc/fonts/fonts.conf中包含的字体别名,该文件包含在 Xorg 6.9rc1 中。
<!-- Provide required aliases for standard names --> <alias> <family>serif</family> <prefer> <family>Bitstream Vera Serif</family> <family>Times New Roman</family> <family>Thorndale AMT</family> <family>Luxi Serif</family> <family>Nimbus Roman No9 L</family> <family>Times</family> <family>Frank Ruehl</family> <family>Kochi Mincho</family> <family>AR PL SungtiL GB</family> <family>AR PL Mingti2L Big5</family> <family>ï¼ï¼³ ææ</family> <family>Baekmuk Batang</family> <family>FreeSerif</family> </prefer> </alias> <alias> <family>sans-serif</family> <prefer> <family>Bitstream Vera Sans</family> <family>Verdana</family> <family>Arial</family> <family>Albany AMT</family> <family>Luxi Sans</family> <family>Nimbus Sans L</family> <family>Helvetica</family> <family>Nachlieli</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>AR PL KaitiM Big5</family> <family>ï¼ï¼³ ã´ã·ãã¯</family> <family>Baekmuk Dotum</family> <family>SimSun</family> <family>FreeSans</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Bitstream Vera Sans Mono</family> <family>Andale Mono</family> <family>Courier New</family> <family>Cumberland AMT</family> <family>Luxi Mono</family> <family>Nimbus Mono L</family> <family>Courier</family> <family>Miriam Mono</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>Baekmuk Dotum</family> <family>FreeMono</family> </prefer> </alias>
根据您的发行版,可能有一个万无一失的字体安装程序,也可能没有。无论如何,使用简单的命令总是有效的。
要安装新字体,只需下载字体文件(例如“.ttf”文件)并将其放在正确的目录中。对于使用 fontconfig 的 Xft,您可以安装哪些字体以及安装的位置由默认配置文件 /etc/fonts/fonts.conf
或 /etc/fonts/local.conf
或 ~/.fonts.conf
中的额外配置决定。大多数发行版在 /etc/fonts/fonts.conf
中有以下行
<dir>~/.fonts</dir>
这意味着您可以使用简单的用户权限在您的主目录中安装新字体。要更新 fontconfig,您可以使用命令 fc-cache
。
例如,假设您已将字体 anicefont.ttf
下载到您的桌面。打开您喜欢的终端或一个简单的 xterm
,然后键入
cd mkdir .fonts cd .fonts cp ~/Desktop/anicefont.ttf . fc-cache
完成。您可以使用命令 fc-list
(例如使用 sort
和 more
对其进行分页)来检查字体是否已成功安装,并检查您的字体名称:fc-list | sort | more
。