美不仅仅是像素的深度?,第二部分

作者:Marcel Gagné

欢迎各位回到系统管理员专栏的又一期,在这里,知识和发现是关键词,而神秘主义和不可能则不然。现在又到了揭开 Linux 字体幕布的时候,与幕后操纵的绅士进行一次愉快的长谈。从我上一期专栏收到的一些回复来看,字体似乎是许多人的噩梦(我不能说我责怪你们)。然而,现在是放下恐惧,学会享受字体体验的时候了。

正如你们许多人已经知道的那样,我坚信在实践中学习,通过尝试事物,看看当你输入这个命令或那个命令时会发生什么。基于这一点,我将让你们玩转字体。我将让你们尝试一些事情,其中一些事情可能会在你的 X 显示器的字体方面产生一些奇怪的结果。我不是想吓唬你,我只是想确保你在开始之前备份你的文件。

重复出现的问题之一是字体服务器,特别是 xfs。当 XFree86 4.X 已经知道如何处理 TrueType 字体时,你为什么要使用 xfs?我同意这似乎是一件过于复杂的事情,但请记住 Linux 的服务器根基(可以这么说)。其想法是,你可以在办公室的一台机器上运行字体服务器,并让所有其他 Linux 客户端利用其资源。为什么?因为每台机器都使用相同的字体,从而提供一致的环境。你可能还记得,xfs,X 字体服务器,默认在端口 7100 上运行。这就是你的 XF86Config-4 文件中这一行的全部意义。

     FontPath "unix/:7100"

正如你可能已经猜到的那样,通过指定端口,可以从另一个端口运行字体服务器。事实上,你可以运行多个字体服务器,每个服务器都有自己的配置。在下面的示例中,我启动了 xfs 的第二个实例,这个实例在端口 7101 上运行,而不是默认的 7100。

     xfs -config /etc/X11/fs/configtest -port 7101

是的,我在命令中添加了一些其他内容。-config 参数告诉程序从不同的配置文件读取其信息,因为我真的不想在我进行实验时搞乱我的原始文件。在本例中,该文件名为 configtest,我可以将其放在任何我喜欢的目录中。如果你还记得本系列的第一部分,xfs 使用一个名为 config 的文件,该文件可以在 /etc/X11/fs 或 /usr/X11R6/lib/X11/fs 中找到,具体取决于你的系统。通过指定第二个文件,我们可以随意调整和实验。

使用 xlsfonts 命令,你可以获得系统上所有字体的列表。你也可以通过直接查询字体服务器来获得该列表,方法是输入 fslsfonts -server unix/:7100

根据你的 Linux 发行版和 X 的安装,这可能有效,也可能无效。例如,在我的笔记本电脑(运行 Red Hat 7.2)上,X 字体服务器默认不允许 TCP 连接。这样做是为了安全,但这在某种程度上否定了我前面提到的优势。该设置由你的 fs/config 文件中的以下行控制。

    no-listen = tcp

只需从上面的行中删除 tcp,保存你的更改,然后停止并启动字体服务器。现在你应该能够顺利地使用 fslsfonts 命令了。事实上,你甚至可以使用它来远程查询你的系统或另一个系统。例如,我可以使用命令 fslsfonts scidev:7100 获取我的主要开发机器 (scidev) 提供的所有字体的列表。

在我们继续下一步之前,我想向你展示如何在你的系统上启动第二个 X 会话,而无需接触你当前正在使用的会话。你的 X 会话很可能在虚拟终端 7 上运行。这是因为你的虚拟终端 1 到 6 正忙于为其他会话提供文本登录。你可以通过键入 Ctrl-Alt-F1 跳出你当前的会话,并通过键入 Ctrl-Alt-F7 返回。

安全返回了吗?太棒了。现在转到你的第二个(或第三个或第四个)终端会话并登录到测试帐户。由于我总是做这种疯狂的事情,我创建了一些额外的登录名,测试用户,以便我自己的工作环境保持相对稳定。使用备用登录名,在 shell 提示符下键入此命令

     startx -- :1

一个完整的第二个 X 会话将在你的系统上启动,在虚拟终端 8 上运行。要切换到你的第一个会话,你可以使用 Ctrl-Alt-F7;Ctrl-Alt-F8 将带你回到你的第二个会话。

我们将对 X 服务器本身使用相同的原则。默认情况下,它使用一个名为 XF86Config(或 XF86Config-4)的文件。我所做的是复制该文件并将其带入工作目录。我将我的工作目录称为 Xperiment。

     cd $HOME/fontplay
     cp /etc/X11/XF86Config-4 Xperiment

打开你的新文件并查找 FontPath 行。然后,将字体服务器从端口 7100 更改为端口 7101。

     FontPath "unix/:7101"

现在,让我们启动我们的 play X 会话,以使用新的配置文件和新的 X 服务器。

     startx -- :1 -xf86config $HOME/tmp/Xperiment

你现在拥有的是一个单独的 xfs 环境,可以进行实验,一个不会影响你当前运行会话的环境。你现在可以安全地从目录(在你的新配置文件中定义)中删除字体,更改加载顺序等等。顺便说一句,顺序确实很重要。查看你的 xfs 配置文件的顶部,你会看到类似这样的内容

     catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
        /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
        /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
        /usr/X11R6/lib/X11/fonts/misc,

在更改任何内容之前,启动 Netscape 或 GIMP 或任何使用本机 X 字体的程序。我提到这一点的原因是,各种桌面环境(如 KDE)控制其自身应用程序的字体。不幸的是,仅仅运行 KDE 并拥有所有定义良好的字体并不意味着 GIMP 一定会使用这些字体。话虽如此,一旦你启动了 GIMP,你应该会得到类似下图的内容。

Is Beauty Only Pixel Deep?, Part 2

现在回到你的 xfs 配置文件,将顶部的 75dpi 行与 100dpi 行交换。保存你的更改,停止并重新启动 xfs。然后重新启动你的桌面并再次启动 GIMP。你应该会看到类似此图像的内容

Is Beauty Only Pixel Deep?, Part 2

请注意,虽然 KDE 桌面字体看起来相同(窗口标题栏,上面写着 The GIMP),但菜单字体(上面写着 File、Xtns、Help)要大得多。你们中的一些人会说,“是的,但是你可以使用命令行选项更改 X 会话的 dpi 设置”,你是正确的。我想在这里展示的是字体列表的顺序很重要。当系统调用 12 pt. 常规 Times 字体时,它会抓取它找到的第一个,但这可能不是你想要的。这里还有一些可以尝试的事情。请注意,你的 FontPath 列表包括 75dpi、100dpi 和杂项字体,包括常规版本和未缩放版本。

     /usr/X11R6/lib/X11/fonts/75dpi:unscaled
     /usr/X11R6/lib/X11/fonts/75dpi

尝试将未缩放字体放在列表的顶部,而不是其缩放的对应字体;你可能会感到惊喜。事实上,考虑完全从列表中删除缩放字体。在端口 7101 上停止并启动你的字体服务器,然后启动 X。当你对结果感到满意时,你可以将这些更改迁移到你的真实 xfs 配置文件。

这几乎涵盖了我现在的电子分配,所以我将在此暂停。下次,我们将专门关注 TrueType 字体。我将告诉你哪里可以获得它们以及如何使用它们。我甚至可能不得不提及其他操作系统并理清一些事情。与此同时,请记住,美不仅仅是像素的深度。

Marcel Gagné 的著作 Linux 系统管理;用户指南 (ISBN 0-201-71934-7, Addison Wesley) 现已在商店(包括您最喜欢的在线供应商)销售。您可以从他的网站 http://www.marcelgagne.com 下载免费摘录。

电子邮件:mggagne@salmar.com

加载 Disqus 评论