6.5. 在 Xorg 中使用字体

6.5.1. Type1 字体

Xorg 使用默认使用的字体不是很理想。 大字体显得参差不齐, 看起来很不专业, 小字体简直无法看清。 不过也有一些免费的、 高质量的 Type1 (PostScript®) 字体可供 Xorg 使用。 例如: URW字体集合 (x11-fonts/urwfonts)就包含高质量的 type1 字体 (Times Roman®, Helvetica®, Palatino® 和一些其他字体)。 在 Freefont 集合中(x11-fonts/freefonts)包括更多的字体, 但它们中的绝大部分使用在图形软件中, 如 Gimp , 在屏幕中使用并不完美。 此外, Xorg 致力于最少的配置就能使用 TrueType® 字体。 欲了解更多这方面更多详细信息, 请参阅 X(7) 联机手册或 TrueType® 字体一节

如果希望使用 Ports Collection 来安装上面的 Type1 字体, 只需运行下面的命令:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

freefont 或其他的字库和上面所说的大致相同。 为了让 X 服务器能够检测到这些字体, 需要在 X 服务器的配置文件 (/etc/X11/xorg.conf) 中增加以下配置:

FontPath "/usr/local/lib/X11/fonts/URW/"

或者, 也可以在 X 会话(X session)中运行以下命令:

% xset fp+ /usr/local/lib/X11/fonts/URW
% xset fp rehash

这样当前 X 会话中立即生效, 但是 X 会话结束后自动失效。 除非它被添加到针启动器配置文件中去, (使用startx 会话方式启动的写到 ~/.xinitrc 中, 或者当您使用类似 XDM 的图形登录管理器的则写到 ~/.xsession 中。 第三种方法是创建新的 /usr/local/etc/fonts/local.conf 文件, 详见: anti-aliasing 章节。

6.5.2. TrueType® 字体

Xorg 内建了对 TrueType® 字体的支持。 有两种不同的模块能够启用这个功能。在这个例子中使用 freetype 这个模块, 因为它与其他的字体描绘后端有更好兼容性。 要启用 freetype 模块, 只需要将下面这行添加到 /etc/X11/xorg.conf 文件的 “Module” 部分。

Load  "freetype"

现在, 为 TrueType® 字体创建一个目录 (比如,/usr/local/lib/X11/fonts/TrueType) 然后把所有的 TrueType® 字体复制到这个目录。 记住您不能直接从 Macintosh® 计算机中提取 TrueType® 字体; 能被 X11 使用的必须是 UNIX®/MS-DOS®/Windows® 格式的。 一旦您已经将这些文件复制到了这个目录, 就可以用 ttmkfdir 来创建 fonts.dir 文件, 以便让 X 字体引擎知道您已经安装了这些新字体。 ttmkfdir 可以在 FreeBSD Ports Collection 中的 x11-fonts/ttmkfdir 中找到。

# cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir

现在可以把 TrueType® 字体目录添加到字体路径中。 这和上面 Type1 字体的步骤是一样的, 使用以下命令:

% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash

或者把 FontPath 这行加到 xorg.conf 文件中。

就是这样。现在 GimpApache OpenOffice 和所有其他的 X 应用程序应该可以认出安装的 TrueType® 字体。 一些很小的字体(如在网页中高分辨率显示的文本)和一些很大的字体(在 StarOffice下)现在看起来已经很美观了。

6.5.3. 字体反锯齿

对于所有支持 Xft 的应用程序, 所有放在 /usr/local/lib/X11/fonts/~/.fonts/ 目录中的Xorg 字体都会自动启用反锯齿支持。 绝大多数较新的程序都提供了 Xft 支持,包括 KDEGNOMEFirefox 。 GNOME 以及 Firefox。

要控制哪些字体需要开启反锯齿,或者需要配置反锯齿功能,需要创建(或编辑,如果文件已存)/usr/local/etc/fonts/local.conf 这个文件。 Xft 字体系统中的几个高级特性都可以使用这个文件来调整; 本章只介绍了几种最简单的用法。 要了解更多的细节, 请查阅 fonts-conf(5)

这个文件必须是XML格式的。 注意确保所有的标签都完全闭合。 这个文件头部是普通的 XML 头, 接着是 DOCTYPE 定义, <fontconfig> 标签:

      <?xml version="1.0"?>
      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <fontconfig>

像前面所做的那样,所有支持 Xft 的应用程序都已经可以使用 /usr/local/lib/X11/fonts/~/.fonts/ 目录下的字体。如果您想添加这两个目录以外的其他字体目录, 只需要简单的添加下面这行到 /usr/local/etc/fonts/local.conf 文件中:

<dir>/path/to/my/fonts</dir>

添加了新的字体,尤其是添加了新的字体目录后, 您应该运行以下命令重建字体缓存:

# fc-cache -f

反锯齿会让字体边缘有些模糊, 这样增加了非常小的文本的可读性, 并从大文本字体中删除 锯齿 。 但如果使用在普通的文本, 则可能引起视力疲劳。 要禁止 14磅 以下字体的反锯齿, 需要增加以下配置:

        <match target="font">
	    <test name="size" compare="less">
		<double>14</double>
	    </test>
	    <edit name="antialias" mode="assign">
		<bool>false</bool>
	    </edit>
	</match>
	<match target="font">
	    <test name="pixelsize" compare="less" qual="any">
		<double>14</double>
	    </test>
	    <edit mode="assign" name="antialias">
		<bool>false</bool>
	    </edit>
	</match>

使用反锯齿来分割一些等宽字体也是不合适的。 似乎 KDE 就有这问题。 要修复这个问题需要确保每个字体之间的间距保持在100。 添加一下内容:

       <match target="pattern" name="family">
	   <test qual="any" name="family">
	       <string>fixed</string>
	   </test>
	   <edit name="family" mode="assign">
	       <string>mono</string>
	   </edit>
	</match>
	<match target="pattern" name="family">
	    <test qual="any" name="family">
		<string>console</string>
	    </test>
	    <edit name="family" mode="assign">
		<string>mono</string>
	    </edit>
	</match>

(this aliases the other common names for fixed fonts as "mono"), and then add:

         <match target="pattern" name="family">
	     <test qual="any" name="family">
		 <string>mono</string>
	     </test>
	     <edit name="spacing" mode="assign">
		 <int>100</int>
	     </edit>
	 </match>      

某些字体, 比如 Helvetica, 当开启反锯齿时可能存在些问题。 通常的表现为字体本身似乎被垂直的切成两半。糟糕的时候, 还可能导致应用程序崩溃。 为了避免这样的现象, 考虑添加以下几行到 local.conf 文件中:

         <match target="pattern" name="family">
	     <test qual="any" name="family">
		 <string>Helvetica</string>
	     </test>
	     <edit name="family" mode="assign">
		 <string>sans-serif</string>
	     </edit>
	 </match>        

一旦您完成对 local.conf 文件的编辑, 确保您使用了 </fontconfig> 标签来闭合文件。 不使用它将导致您的更改被忽略。

最后, 用户可以通过他们自己的 ~/.fonts.conf 配置文件来添加自己的设置。 要做到这一点, 用户只需要简单的创建 ~/.fonts.conf 文件,这个文件必须是 XML 格式的。

最后, 对于LCD屏幕, 可能希望使用子像素的取样。 简单而言, 就是通过分别控制 (水平方向分开的) 红、 绿、 蓝 像素, 来改善水平分辨率;这样做的效果一般会非常明显。 要启用它, 只需在 local.conf 文件的某个地方加入:

	  <match target="font">
	     <test qual="all" name="rgba">
		 <const>unknown</const>
	     </test>
	     <edit name="rgba" mode="assign">
		 <const>rgb</const>
	     </edit>
	 </match>

Note:

根据您显示器的种类不同, 可能需要把 rgb 改为 bgrvrgbvbgr 。 试验一下看看那个更好。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.