5.5. 在Xorg使用字体

5.5.1. Type1字体

由于Xorg内置的预设字体用在典型的桌面出版应用程序并不是很理想,大字体会呈现锯齿状边缘,看起来很不专业,小字体几乎完全看不清楚。不过,这里有几个免费高品质的Type1(PostScript®)字体可用,且能容易的在Xorg使用。例如,URW字体集(Times Roman®,Helvetica®,Palatino®及其他)。Freefont字体集(x11-fonts/freefonts)包含了更多的字体,但其中大部分是给图形软件如GIMP所使用的字体,并不能完全作为屏幕字体使用。此外,Xorg可以简单的设定使用TrueType®字体。更多有关本主题的详细信息,请参考X(7)操作手册或第 5.5.2 节 “TrueType®字体”

要由Binary套件安装上述的Type1字体集可执行以下指令:

# pkg install urwfonts

或由Port套件集编译,可执行以下指令:

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

同样的安装方式也适用Freefont或其他字体集。要让X服务器侦测到这些新安装的字体,可加入适当的设定到X服务器配置文件(/etc/X11/xorg.conf),内容为:

FontPath "/usr/local/share/fonts/urwfonts/"

或者在X session的指令列执行:

% xset fp+ /usr/local/share/fonts/urwfonts
% xset fp rehash

这样便可,但在X session关闭时将会失效,除非将该设定加入启动档(一般的startx session可在~/.xinitrc设定,若透过图型化登入管理程式如XDM登入时则在~/.xsession设定)。第三种方式是使用新/usr/local/etc/fonts/local.conf,如第 5.5.3 节 “抗锯齿字体”的示范。

5.5.2. TrueType®字体

Xorg内置支持绘制TrueType®字体,目前有两个模块可以支持这项功能。在本例中使用freetype模块,由于此模块与其他字体绘制后端较为一致。要开启freetype模块只需要将下行加入到/etc/X11/xorg.conf中的“Module” section。

Load  "freetype"

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

# pkg install mkfontscale

然后在目录中建立X字体档的索引:

# cd /usr/local/share/fonts/TrueType
# mkfontscale

接着加入TrueType®目录到字体路径。这个动作与第 5.5.1 节 “Type1字体”中所介绍的方式相同:

% xset fp+ /usr/local/share/fonts/TrueType
% xset fp rehash

或直接加入FontPath一行到xorg.conf

现在GimpApache OpenOffice以及其他X应用程序应可以辨识到已安装的TrueType®字体。极小的字体(以高分辨率在网页中显示的文字)与极大的字体(在StarOffice中)现在会看起来比较像样了。

5.5.3. 抗锯齿字体

所有可在/usr/local/share/fonts/~/.fonts/找到的Xorg字体均可在Xft-aware的应用程序使用反锯齿的效果。大多最近的应用程序均为Xft-aware的,包括KDEGNOME以及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>

如同前面所提到的,所有在/usr/local/share/fonts/~/.fonts/的字体均可在Xft-aware的应用程序做反锯齿效果,若您想要加入除了上两者以外的目录,可加入如下行设定到/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>

(这会设定等宽字体的其他常用名称为“mono”),然后加入:

         <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>标签结尾,若没有使用会让所做的更改被忽略。

使用者可透过建立自己的~/.config/fontconfig/fonts.conf来加入个人化的设定,此档案使用与上述说明相同的XML格式。

最后一点:若有使用LCD屏幕,可能会想要使用子像素取样(Sub-pixel sampling),这基本上会分开处理(水平分隔)红、绿、蓝色彩组成来提高垂直分辨率,结果可能是无法预料的。要开启这个功能,加入下行到local.conf的任一处:

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

注意:

依据不同的显示器类型可能会需要将rgb更改为bgrvrgbvbgr:可实验看看然后看那一个效果最好。

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

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

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