XFree86 字体美化 Mini HOWTO 作者: Doug Holland, [1]meldroc@frii.com 修增: Hal Burgiss, [2]hburgiss@bellsouth.net 译者: Yu-Chia Chang, [3]joezhang@ms10.hinet.net v1.5.1, 1 Aug. 2000. 翻译日期: 24-31 Aug. 2000 _________________________________________________________________ 如何改善丑陋和难以阅读的 X Window 字型。有许多改善 XFree86 处理字型的技 巧,包含字型伺服器(fonts server),TrueType 字型, Netscape 和相关的主题 等。 _________________________________________________________________ 1. 简介 * 1.1 惯例 * 1.2 Change log * 1.3 新版 * 1.4 Copyright * 1.5 致谢 2. X Server 的设定 * 2.1 设定 FontPath * 2.2 X server 命令列选项 (command line options) 3. TrueType 字型 (少数 Windows 在行的事情) * 3.1 取得 TrueType 字型 * 3.2 字型伺服器 * 3.3 xfsft * 3.4 fonts.alias 档 4. XFree86 4.x 5. 调整应用程式的字型 * 5.1 KDE * 5.2 Netscape 6. 杂项和结尾 * 6.1 记录 * 6.2 连结 _________________________________________________________________ 1. 简介 在我必须处理的一堆讨厌事中,有一项就是糟透的 X 预设字型和字型设定 (这里 我专指 [4]XFree86,其他的 X 也许比较好)。有些程式预设使用固定宽度字 型(fixed width fonts),其实上可变宽度字型(variable width fonts)较为适当 。有些程式使用小到不可思议且难以辨认的字型。伴随 XFree86 而来的字型根本 不适用。它的确有还算精致的 courier 字型,但是它的 Times 和 Helvetica 只 是简单的点阵字,当缩放的时候就产生锯齿状。 这份 HOWTO 尝试说明如何调整各式各样的字型设定,如何安装新字体,和其他可 以大幅改善 X Window 字型的外观和增加可读性的方法。这是藉由调整 XF86Config 档中的 FontPath,在 startx 或 xdm (和类似的图形登录介面)加 上 X server 命令列选项(command line options),加入新的字型,安装 TrueType 字型伺服器和字型,和使用 K Desktop Environment 1.1 的功能来调 整许多应用程式的字型设定,包含设定让非 KDE 应用程式的颜色和字型能够与 KDE 一致。 欢迎评论,更正,增修和批评。你可以在 [5]meldroc@frii.com 和 [6]hburgiss@bellsouth.net 联络到作者。 译按:若对中译文有任何的建议和更正,欢迎写信告诉我。我的联络方式 [7]joezhang@ms10.hinet.net。 1.1 惯例 在一些命令的例子中,"#" 符号通常是表示只让超级使用者执行,而 "$" 则表示 一般的使用者就可以执行。 在例子中,/usr/local/share/fonts/ttfonts 是我们 TrueType 字型的目录。这 并不是一个特殊位置,你也可以变更它。 "xfs" 在这里是指 Redhat 6.x 中包含的 xfs。在某一方面,它和一般指的 XFree86 xfs 有很大的出入。 "Netscape" 指的是整套的 Netscape 程式。包含: Communicator, Navigator, Messenger 等。Mozilla 的字型的设定是相同的。 1.2 Change log * 0.1: Feb. 21, 1999: 第一次公布。 * 0.11: Feb. 27, 1999: 放入 copyright 保护我的权利。 * 0.12: Jun. 10, 1999: 放入请求援助。 * 0.20: Sep. 14, 1999: 为 Redhat 的使用者加入有关於 xfs 的一节。感谢 Hal Burgiss 的贡献。 * 1.0: Nov. 23, 1999: 将文章转为 SGML 格式,送入 Linux Document Project。将请求援助的部份移除。 * 1.5: July 25, 2000: 加入了有关 fonts.alias, XFree86 4.x 和 xfsft 的 新章节,还有一些修改和增补。 1.3 新版 1.5 版包含了关於 xfsft, fonts.alias 和 XFree86 4.x 的新章节。除此之外, 也增加了一个新的章节,是关於一些连结和记录,并重写 xfs 的那节。还有一些 修改和增补。 在 1.51 版中,感谢 Kristin Aanestad 对本文件的目的提出建议。 本文件的新版可以在 [8]http://feenix.eyep.net/ldp/fdu/index.html 找到。 1.4 Copyright Copyright 1999 by Doug Holland. 译按: 为尊重作者原意,这部份不译 (其实是偷懒啦)。 Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and in whole or in part, in any medium physical or electronic, long as this copyright notice is retained on all copies. Commercial is allowed and encouraged; however, the author would to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating Linux HOWTO documents must be covered under this copyright notice. is, you may not produce a derivative work from a HOWTO and impose restrictions on its distribution. Exceptions to these rules be granted under certain conditions; please contact the Linux coordinator for more information. In short, we wish to promote dissemination of this information through many channels as possible. However, we do wish to retain copyright the HOWTO documents, and would very much like to be notified of any to redistribute the HOWTOs, this one in particular! Web page are free to link to this HOWTO without restriction, though the would appreciate an email informing him of this, just so he can his ego by knowing who else reads and links to this document. Many of the terms mentioned in this document are trade names. Unless stated, all trademarks are property of their respective owners. 1.5 致谢 本文件由 Doug Holland 所撰写 Email: [9]meldroc@frii.com WWW: [10]http://www.frii.com/~meldroc/ 由 Hal Burgiss 更新 Email: [11]hburgiss@bellsouth.net WWW: [12]http://feenix.eyep.net/ 特别感谢 * [13]XFree86 Project 的发展者奉献出他们的时间和精力。除此之外 ,Juliusz Chroboczek 的 xfsft,和 XFree86 4.x 让 TrueType 进入实用 阶段。 * 感谢字型天才 Kristin Aanestad 在 xfs, TrueType, Netscape 和特别是 fonts.alias 等章节的贡献。你可以在 [14]Some Linux for Beginners 找 到更多 Kristin 在其他主题的资料。 * 在 [15]comp.os.linux.x 的人们,他们在我刚开始研究这些的时候对我伸出 援手。 * 最初让这所有一切变为可能的 Linux 社群。 * Microsoft 和 Apple: 他们提供了字型,美化了我的桌面。 2. X Server 的设定 下面是一些很容易就可以让 X 表现更好的步骤: 2.1 设定 FontPath 想要解决字型的问题,首先得看看 XF86Config 档。(通常放在 /usr/X11/lib/X11/XF86Config 或 /etc/X11/XF86Config)。若你还没猜出来的话 , 其中对字型最重要的部份就是 FontPath。在钻研它之前,最好先检查 X 的其 他设定。错误的萤幕设定比错误的字型设定更令人头痛。确定你萤幕的更新频 率(refresh rate)在正常使用□围中已经设到最高 (85Hz 很好,75Hz 普通,60 Hz 很不舒服)。 用你最顺手的文字编辑器来编辑 XF86Config。在档案开头的 File 那节,你应该 会看到类似下面的东西: FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" 这部份在 XFree86 3.x 和 4.x 里应该相同,或至少类似。FontPath 告诉 X 到 那里去找在显示器上画字用的字型。排列的顺序是很重要的,当一个 X 应用程式 向 X 要求画一些字,X server 通常偏好采用正在使用的字型。然後它去检查 FontPath,使用第一个能满足 X client 要求的字型。请注意,Redhat 6.x 的 xfs 采用另一种方式来设定 FontPath。请参考第 3.2.2 节以了解 xfs。 预设安装通常将 75dpi 的字型放在 100dpi 前面。若你有一台高解析度的显示器 ,这表示非常小的字。若你正是这种情形,第一个要用的方法就是将 75dpi 和 100dpi 的 FontPath 对调。 FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" 然後指出你偏好使用不能缩放的点阵字。若你曾经使用 Netscape 或是其他使用 较大字型来显示标题的程式,你将会发现这些字型会呈现锯齿状。这样很难看, 必须要修正。所以在 misc,100dpi 和 75dpi 的後面加上 :unscaled。若想要的 话,你也可以同时使用能缩放和不能缩放的字,只要将不能缩放的字的 FontPath 放在前面,告诉 X 说若可能的话,尽量使用不能缩放的字。 FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" 做了这些改变後,重新启动 X。桌面是不是已经比较漂亮呢? 2.2 X server 命令列选项 (command line options) 下面一件要做的事是调整 X server 的命令列选项。您将会想要用 -dpi 来指定 显示的解析度是每英□几点。现今很多系统都使用高解析度的显示器,可能它们 需要用 100dpi。 若你是在 console 的提示列下启动 X,键入 $ startx -dpi 100 若你是采用 xdm 这类的图形登录介面,你需要编辑你的 /usr/X11/lib/X11/xdm/Xservers 档 (或是 /etc/X11/xdm/Xservers)。在里面有 Xserver 的命令列。我的档案里有下面这一行: :0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6 你可在 X 和 Xserver 的 manpage 中找到更多的资讯。 3. TrueType 字型 (少数 Windows 在行的事情) 因为在 Redmond 的那群家伙非常关心他们软体的外观而不是内容,他们在 Windows 里加上对 TrueType 字型的支援。当然,他们是从源起於 MacOS 中的 TrueType 中得到了这个主意。 Window 9x 和其他的 Windows 都内含 Arial ,Times New Roman,和 Courier New。他们约等於 Helvetica,Times,和 Courier。TrueType 字型是能缩放的,所以它们在放大时很好看,而它们也被好 好的调整(hint)过,在缩小的时候依然可读。有许多的 Windows 应用程式附送好 几打的 TrueType 字型。先别急著把你的 Windows CD 拿去微波,得先拿到这些 字型。 不幸的是,XFree86 3.x 并没有内建支援 TrueType,所以你必须自己加入。然而 ,XFree86 4.x 则内建了 (请参考第 4 节)。这表示支援 TrueType 的字型伺服 器和字型将会被安装。但你并不会在各家的 distribution 中发现精美的 TrueType 字型。最可能的原因是现在并没有以适当的 license 发行的精美字型 。 3.1 取得 TrueType 字型 让我们先处理字型。在各种 MS Windows 所附的 TrueType 字型应该都可以用。 别忘记文字处理器和其他应用程式也都附有自己的字型。MacOS 的字型不能使用 。若你已经把那片 CD 拿去微波,还有一些免费的 TrueType 字型可以下载 (请 参考 6.2 节的连结)。 为了使用 TrueType 字型,这些字型必须能够被字型伺服器读取。这表示它们必 须是在一个一直被挂载 (mount) 的档案系统中。在双作业系统 (dual boot system) 上,这也可以是一个 Windows 分割区。当然,这些字型也可以拷贝到 Linux 中。首先先变成超级使用者: # su - # mkdir -p /usr/local/share/fonts/ttfonts 现在切换到新的字型目录下: # cd /usr/local/share/fonts/ttfonts 然後将字型加入这个目录。不论你是从 Windows 系统中拷贝过来 # cp /mnt//*ttf . 或是从 [16]Mircosoft 下载。这些字型是自解压缩的 zip 档。若你想在 Linux 下解压缩,必须下载标示 'Windows 3.1' 的档案。在 Linux 下以 Linux zip 解 开 # ls *exe | xargs -n 1 unzip -L '-L' 的选项会将字名转为小写,这对於 xfsft 和 Redhat 的 xfs 是必要的。注 意现在的 Linux zip 程式并不能处理 32 位元的 Win9x 字型压缩档。看起来似 乎 Microsoft 不会再在这个网站上放入 16 bit 的 Arial, Courier 和 Times-Roman。或是你可以在 [17]这里 下载包含许多 MS TrueType 字型的 WebFonts RPM。它已经包含足够的字型给 Netscape 和其他的网路浏览器使用了 。 你必须在 X server 的 FontPath 中加入这个新的 TrueType 目录。用你顺手的 文字编辑器加上适当的几行: FontPath "/usr/local/share/fonts/ttfonts" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" 3.2 字型伺服器 现在有许多字型伺服器都可以使用: xfstt,xfsft,和 Redhat 自 xfsft 修改而 来的 xfs。虽然这些名字看起来很像,但是它们却是不同的套件。至少一个以上 的套件应该已经包含於任何最近的 Linux distribution。而你也可能已经安装了 。 以前字型伺服器是用於在网路上提供字型。字型的资源可以存於一台机器上,其 他的 client 可以在需要的时候读取。但是它的发展者增加了新功能,如可以画 TrueType 字型。(XFree86 4.x 已经包含这个功能,所以若只是要提供 TrueType 支援的话,并不需要另外的字型伺服器)。 xfstt 一个这样的字型伺服器是 xfstt。它在设计上就有考虑到 TrueType 字型。 安装 xfstt 非常容易安装和设定。若你尚未安装的话,必须从网站上下载 tarball 或 是找找你的 CD。最新的版本是在 [18]http://metalab.unc.edu/pub/Linux/X11/fonts/ 有了 tarball 後,把它解开: $ tar -zxvf Xfstt-*tgz 然後编译和安装它。INSTALL 档有简单的说明。但是其实是不用花什麽脑筋,只 要在 xfstt 的目录下,输入下面的指令即可: # make # make install 键入下面的指令来启动 xfstt: # xfstt --sync # 更新 xfstt 的字型资料库 # xfstt & # 在背景执行 xfstt xfstt 应该要比 X server 更早启动。一旦这样执行无误,你可以在 /etc/rc.d/rc.local 或是适当的起始档中加入上面这一行。然後键入: $ xset +fp unix/:7100 # 知会 X 有关 xfstt 和到那里去找字型 或是在你的 XF86Config 档中加入下面的指令,知会 X 有关於字型伺服器。当 FontPath 的位置和内容有改变的时候,重新执行 xfstt --sync。 FontPath "unix/:7101" 调整预设字型的大小 若你的 TrueType 字型显得相当小,下面的指令可能有帮助。 在 X server 命令列加上 -dpi (请参考第 3 章)。 使用 --res 来告诉 xfstt 增加预设的解析度。用下面的指令 # xfstt --res 120 Redhat 的 xfs 就如同 Redhat Linux 6.0 一般,架构在 Redhat 上的 distribution (如 Mandrake 等) 已经包含了一个特别修正的 xfs 和修正过的 X servers。Redhat 的 xfs 包含了 xfsft 的修正档,而这些修正档则是架构在 FreeType Font library。Redhat 的 xfs 提供与 xfstt 类似的功能。它不只能处理 TrueType 和 Type 1 字型,也可以对付原本的 X 字型。 若是你使用架构於 Redhat 的 distribution,xfs 应该已经安装好了。若没有, 它是在 XFree86-xfs*rpm 中。要想确定它是预设执行的服务,可以用 ntsysv 或: # chkconfig --add xfs 现在 xfs 就会在每一次开机的时候启动。 设定 xfs 的 FontPath 在 Redhat 的预设安装中,xfs 是经由 Unix Domain Socket 提供字型。我们必 须告诉 X server 到那里去找 xfs 和字型。在 /etc/X11/XF86Config 中的 FontPath 一定要包含: FontPath "unix/:-1" 至少预设的设置是如此。这是一个 xfs 会去 listen 的 socket。你也可以加上 另外的 FontPath,但是它们必须由 X server 来处理,而不是 xfs。安装新的 Redhat 6.x 应该就已经设定好了,但是若你是从旧的版本升级上来,必须自己动 手修改。 xfs 在 /etc/X11/fs/config 中存有自己的 FontPath。这里就是它找字型的地方 。在 XF86Config 档中,它放在 X server 的 FontPath 上面。你可以用文字编 辑器加入新的路径,或是用 chkfontpath 命令: # chkfontpath --add /usr/local/share/fonts/ttfonts 该 FontPath 在执行 chkfontpath 命令前必须要先存在。在 /etc/X11/fs/config 中相关部份看起来应该像是: catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/Type1, /usr/X11R6/lib/X11/fonts/Speedo, /usr/X11R6/lib/X11/fonts/misc, /usr/X11R6/lib/X11/fonts/100dpi, /usr/X11R6/lib/X11/fonts/75dpi, /usr/local/share/fonts/ttfonts 准备好字型 在真正使用 TrueType 字型前还有一些事情要作。xfs 需要一些事情按照规矩来 。首先,所有的字名都必须是小写。第二,字名里不能有空白。然後,我们还要 产生一些档案才行。 先成为超级使用者,然後到 TrueType 字型的目录下: # su - # cd /usr/local/share/fonts/ttfonts 若是有小写的字名,你可以使用下面的 script 将所有的字名转为小写: #!/bin/sh # ## -------- convert upper to lower case --------- ls * | while read f do if [ -f $f ]; then if [ "$f" != "`echo \"$f\" | tr A-Z a-z`" ]; then #Note that 'This' will overwrite 'this'! mv -iv "$f" "`echo \"$f\" | tr A-Z a-z`" fi fi done ## eof 注意标点符号 -- 反引号 (backquotes) 很重要! 它也将字名中的空白移除。当 TrueType 字型适当被安装後,你必须要产生 fonts.dir 和 fonts.scale 档。下 面的命令可以做到: # ttmkfdir -o fonts.scale # mkfontdir 现在你的 TrueType 字型目录中应该有 fonts.dir 和 fonts.scale 档 。ttmkfdir 是在 Freetype 的 RPM 里,而且它必须在 mkfontdir 前执行。这些 命令不见得每次都会回报错误,所以要再验证的确产生了档案,且不是空档: $ ls -l fonts.* -rw-r--r-- 1 root root 11657 Aug 17 10:31 fonts.dir -rw-r--r-- 1 root root 11657 Aug 17 10:31 fonts.scale 若你遇到问题,试试在 ttmkfdir 中加上 - m 的选项。这会放弃档案中不正确的 字元。设定一个数字,如 50 或是 100 (ttmkfdir -m 50) 。档案本身是文字档 。看一看: $ less fonts.dir 114 webdings.ttf -microsoft-Webdings-medium-r-normal--0-0-0-0-p-0-microsoft-symb ol verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-ascii-0 verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-fcd8859-15 verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-15 verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-9 verdanaz.ttf -microsoft-Verdana-bold-i-normal--0-0-0-0-p-0-iso8859-1 [...] 接著,更新 xfs (在 XFree86 4.x 或许不用) 和你 X server 的 FontPath: # /etc/rc.d/init.d/xfs restart $ xset +fp /usr/local/share/fonts/ttfonts $ xset fp rehash 当你加入或移除新的字型时,重新执行头尾这两个命令。xset +fp 只有在增加新 的字型目录时才需执行。 现在应该就没问题了。你可以检查 X 可以使用的字型: $ xlsfonts | less 或是再用 xfontsel 或 gfontsel 来检查。若在 xlsfonts 中可以看到,则 X 可 以使用,反之亦然。若没有出现,以 Ctrl-Alt-BS 重新启动 X。 3.3 xfsft [19]xfsft 是由 Juliusz Chroboczek 所写的 TrueType 解决方案。xfsft 是架 构在 Mark Leisher 等人所写的 FreeType font library。它基本上是一个 XFree86 xfs 再加上相关函式库的修补档 -- xfs + ft。Redhat 的 xfs 基本上 是 xfsft 再加上一些小小的修正。而 Free86 4.x 也包含了同为 Juliusz 所写 的 freetype 字型模组(font module)。它是 XFree86 4.x 的 TrueType 解决方 案中的一个。 要想编译 xfsft 除了 xfsft 本身外,至少还要一些 XFree86 的原始档,所以不 适合心脏不够强壮的人。编译和设定 xfsft 的说明已经在 tarball 中,所以在 这里我不打算详细叙述。他很直接。在 xfsft 的网页 (见上面) 上有一些可执行 档的连结。 注意你必须产生 fonts.scale 和 fonts.dir 档给 xfsft。fonts.scale 可以手 动产生,或是用 ttmkfdir 程式。它并未包含於 xfsft,但是你可以在 [20]这里 或许多 Linux 的网站上抓到。Redhat 在 Freetype 的 RPM 里包含了这个程式。 你也会需要一个设定档。下面是个例子: ----------------------------------------------------- clone-self = off use-syslog = off client-limit = 20 catalogue = /usr/local/share/font/ttfonts error-file = /home/jec/fonts/xfs.errors # in decipoints default-point-size = 120 # x,y default-resolutions = 100,100,75,75 ----------------------------------------------------- 然後执行 xfsft: # xfs -port 7100 -config /path/to/your/config/file & 你可以在 X server 的 FontPath 中加上 xfsft: $ xset +fp tcp/localhost:7100 若一切顺利的话,你可以在 XF86Config 中加上这个 FontPath。 3.4 fonts.alias 档 fonts.alias 是另一个可以调整如何处理字型的设定档。就如同 fonts.scale 和 fonts.dir 一般,fonts.alias 也必须和字型放在同一个目录下。它虽然不是必 要的,但是有的话的确解决了某些可能发生问题。下面是一个摘自 Redhat 系统 中 /usr/X11R6/lib/X11/fonts/misc/fonts.alias 第一行的例子: fixed -misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1 这里 fixed 就是化身(alias)。每次 fixed 被呼叫时,我们事实上所得到的是第 二列的字型定义。字太小了吗? 只要改字型定义即可 (警告:至少在 Redhat 中, 这个档案很重要)。相同的原则可以应用到所有的字型,包含 TrueType 字。事实 上,若你没有 TrueType,你可以用这个技巧将 Type 1 或类似的字型化身为 TrueType。 在某些无法妥善处理自 fonts.scale 提供的资料的应用程式中,fonts.alias 就 显得相当重要。其中最著名的就是 Netscape。若没有 fonts.alias,你会发现 Netscape 只能显示现有 0 到 12 点的字。或许你也发现若在 Preferences 中指 定另一种点数再配合上 scalable font 选项,Netscape 将无法存下这个设定。 真令人厌烦! 所以我们需要这个档案。下面是取自一个 fonts.scale 档: arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-ascii-0 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-fcd8859-15 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-15 arial.ttf -monotype-Arial-medium-r-normal--0-0-0-0-p-0-iso8859-1 因为这些字是可以缩放的,所以并没有预设的点数。举 Arial 来说,我们必须产 生我们自己的 fonts.alias ,如下: -monotype-Arial-medium-r-normal--6-60-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--7-70-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--9-90-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--8-80-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--10-100-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--9-90-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--11-110-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--10-100-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--11-110-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--12-120-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--12-120-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--13-130-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--13-130-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--14-140-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--14-140-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--15-150-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--15-150-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--18-180-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--18-180-75-75-p-0-iso8859-1 -monotype-Arial-medium-r-normal--24-240-0-0-p-0-iso8859-1 \ -monotype-Arial-medium-r-normal--24-240-75-75-p-0-iso8859-1 (请注意我们将原本是一行的写成两行以增加可读性)。这两列其实应该放在同一 行,用一个以上的空白来区分,而且中间没有 "\" 符号。这样做了之後就会让 Netscape 跑得很顺。你可能也发现在前面几行里,第一列和第二列的点数并不相 同。第一项的第一列是'6',但是在第二列却化身为'9',所以是 9 点字。这是为 了解决在 Netscape 里天杀的小字而故意改的。你可依照你的喜好,解析度和眼 力来调整。 这个档案可以手动产生,或是用神奇的 sed 和 awk script。 [21]这里 有一个 讨论这档案和其他字型相关的主题在 Kristin Aanestad 的网站上。那里也有一 个可以重复自动产生 fonts.alias 档的 python script。感谢 Kristin,他的努 力和见解启发了这一节。 4. XFree86 4.x [22]XFree86 4.0 直接提供了对 TrueType 的支援和一些新功能。能改进对字型 的支援是架构在 Juliusz Chroboczek 的 xfsft。而 xfsft 则是架构在源自於 Mark Leisher 的 FreeType font library。因此 XFree86 4.x 的设定档类似於 xfsft 和 Redhat 修改的 xfs。 FontPath 一直还在 XF86Config 档。而对於 Redhat xfs 的使用者,只要将 FontPath 从 /etc/X11/fs/config 搬回 XF86Config 即可。而现若只要 TrueType 支援不再需要 xfs 了。除非你还需要提供网路上其他 client 字型, 否可你可以将 xfs 关闭。 Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc" FontPath "/usr/X11R6/lib/X11/fonts/Type1" FontPath "/usr/X11R6/lib/X11/fonts/Speedo" FontPath "/usr/share/fonts/default/Type1" FontPath "/usr/local/share/fonts/ttfonts" FontPath "/usr/X11R6/lib/X11/fonts/100dpi" FontPath "/usr/X11R6/lib/X11/fonts/75dpi" EndSection 为了使用 TrueType 字,你还必须在 "Module" 那节要指定 X server 要使用哪 一个模组: Section "Module" Load "freetype" Load "speedo" Load "type1" EndSection 就如同 xfsft 和 Redhat 的 xfs,你还必须在每一个 TrueType 字型目录下产生 fonts.scale 和 fonts.dir 档。而 [23]ttmkfdir 在产生 fonts.scale 时很有 用。请参考前面 xfs 那节以取得更详细的资料和例子。 xtt 是另一个以支援表意文字 (ideographics, Oriental) 著名 TrueType 模组 。两种都可使用,但是在同一时间你只能使用一种。 5. 调整应用程式的字型 5.1 KDE 在这段日子里,KDE 是在 Linux 和 X 里发生过最好的事情之一。它提供了一个 一致的使用者介面,让一般大众能够接触 Linux。你可以在 [24]http://www.kde.org/. 找到更详细的资料。为什麽我会在这大大称赞它呢? 这是因为 KDE 1.1 有个新特色,能够让你程式的字型和颜色与现在的 KDE 风格 一致,包括非 KDE 的应用程式。 在非 KDE 的应用程式上应用 KDE 的字型和颜色 这很简单。只要打开 KDE 的控制中心(Control Center)下面的 Desktop 下面的 style。那里有个选项叫做 "Apply fonts and colors to non-KDE apps"(将字型 与颜色应用到非 KDE 的应用程式),打开它,选 OK,这样就完成了! 下次你开启 许多的 X 应用程式,它们就会像其他的 KDE 应用程式般,使用相同的颜色与字 型。有些人最喜欢这项特色,但若你不喜欢的话,也可以将它关掉。 5.2 Netscape 让我们正视这个问题吧! Netscape 在 Linux 中是一个重要的应用程式。我们都 需要它,也都使用它,所以值得特别花点时间来研究它。打从安装後,Netscape 就出现我们刚刚所讨论到字型问题 -- 大字有锯齿状,难看的字,字太小难以阅 读。一言以蔽之,丑。说不定这就是为什麽你在看这篇文章的原因了? 希望在这个时候你已经采纳了前面的建议。那些步骤大有帮助。TrueType 字型几 乎是必须的,而你也需要一个 TrueType 字型伺服器。许多的网页会指定使用的 字型种类(family),如 Arial,但是通常 Linux 的使用者却没有。虽然这是个差 劲的设计,但是如果有些简单的 TrueType 字将大大帮助我们克服那些短视的设 计。Microsoft -- 无法靠它,但却也少不了它 (can't live with 'em, can't live without 'em)。 假设你已经可以使用 TrueType 了,从 Netscape 的选单上选 Edit -> Preferences -> Fonts。在视窗的右手边拉下 Variable Width Font 的选单,应 该可以看到你的 TrueType 和其他的字型。选择一个你喜欢的当作预设。也选取 Allow Scaling 。若可用的字型点数只有 0 到 12 点,你可以在输入栏中自己键 入想要的点数,然後选 OK。Netscape 的缺点是它不会记得这些设定,所以你必 须在每次启动 Netscape 的时候重作一次,除非你将 fonts.alias 设定好才可以 解决这个问题。请参考fonts.alias 那一节。 也许你想试试 ~/.Xdefaults (在你系统中也许是 ~/.Xresources) 里的设定: Netscape*DocumentFonts.sizeIncrement: 10 Netscape*documentFonts.xResolution*iso-8859-1: 120 Netscape*documentFonts.yResolution*iso-8859-1: 120 当 Netscape 使用不同的 'basefont','sizeIncrement' 控制每一级的大小差: 举例来说,预设是 '20',它相当合适。改变这个值将会不让 Netscape 过度缩放 字型。x 和 y 的解析度大略和 'dpi' 相同。在合理的□围中,任何的数字都可 以使用。你可以做些实验。 执行: $ xrdb -load ~/.Xdefaults (或 .Xresources)。然後重新启动 Netscape。有许多设定都可以这样改变。看看 Netscape.ad 档 (应用程式的预设值),它应该包含在 Netscape 的套件中。 若是这样的方法并不能解决 Netscape 小字的问题,看看前面 fonts.alias 那节 。你可以以这种方式细调许多设定。 Mozilla 的设定应该大略相同。但是你会发现 Mozilla 在 X 中处理字型做的较 好,所以整体看起来会比较好。 6. 杂项和结尾 6.1 记录 不幸的是在 Linux 中并没有一个统一的字型处理系统。你必须针对每一个程式设 定才能使用 TrueType, Type 1 和其他你有兴趣的字型。而每一个应用程式也都 有自己的设定方式,所以你必须自己尝试。 大部分图形介面的应用程式应该都可以使用 TrueType 和 Type 1 字型。然而 ,Linux 版的 WordPerfect 却无法使用 TrueType。(请见下面的连结以取的更多 关於 WordPerfect 的情形)。文字编辑器,终端机这类的程式需要固定宽度字型 ,所以对 TrueType 和其他可缩放的字型无法好好处理。 虽然在这里没有讨论到,但是 Type 1 字型也提供了许多如 TrueType 字型的好 处。你可能已经安装了不少。不幸的是 Type 1 不像 TrueType 一样是网路上的 标准。但是它们在许多其他情形下却很合适,如列印。可以参考 [25]ghostscript 以取的更多的资讯。 现今的 XFree86 还不支援字边柔化(Anti-aliasing)。 虽然可以预设字型点数给 xfs 字型伺服器,但是几乎没什麽应用程式会真正用到 它。 6.2 连结 [26]Video Timing HOWTO,有关於萤幕的设定。 [27]Font HOWTO,有许多关於安装字型和一些应用程式,如 StarOffice, Applixware, Wordperfect, Ghostscript, TeX/LaTeX 的字型技巧。 [28]TrueType HOWTO,关於列印和一些关於应用程式的技巧。 [29]xfsft Homepage,X 的 TrueType 支援。这是 XFree86 4.x 字型模组和 Redhat 的 xfs 的起源。好站,有一些关於字型和 TrueType 的连结。 [30]Some Linux for Beginners,很棒的站,有关於字型和其他 Linux 的题目。 含盖了许多这里讨论过主题并且更为详细。 [31]X-TrueType Homepage,另外的 TrueType 字型伺服器,对日文,中文和韩文 很方便。 [32]Netscape,一些关於字型大小的技巧。 Using Corel Wordperfect 8 for Linux 作者 Rod Smith 的 [33]Wordperfect for Linux -- Fonts and Printers,有关於 Wordperfect 和如何使用 TrueType 。有很棒的资料。 [34]XFree86 Project,里面的人花了无可计数的功夫给了我们一个杀手级的图形 介面环境。在 [35]XFree86 4.x 里有些字型的资料。 [36]Microsoft Web Fonts,深入虎穴。而且他们还是免费的耶。若你没有win32 的系统来解开,请抓标示 Win3.1 的那一个。它可以在 Linux 下解开 (见前面) 。 [37]Web Fonts RPM package,包含许多 MS 的网路浏览器使用字型。 Hewlett Packard -- Garamond, Bodoni, Dark Courier, Euro Sign 和 Ozzie Black 的 [38]HP FontSmart TrueType Fonts。可以在 Linux 下用 unzip 解开 。 [39]Freeware Connection -- Free Fonts Sites 一堆到许多站的连结。 [40]Bitstream's Geometric Slabserif,TrueType 字型。 我还有维护 Redhat 的 xfs, [41]help and troubleshooting page。还有一个 包含 MS TrueType 字型,fonts.scale 和 fonts.dir 的 RPM 套件。 References 1. mailto:meldroc@frii.com 2. mailto:hburgiss@bellsouth.net 3. mailto:joezhang@ms10.hinet.net 4. http://www.xfree.org/ 5. mailto:meldroc@frii.com 6. mailto:hburgiss@bellsouth.net 7. mailto:joezhang@ms10.hinet.net 8. http://feenix.eyep.net/ldp/fdu/index.html 9. mailto:meldroc@frii.com 10. http://www.frii.com/~meldroc/ 11. mailto:hburgiss@bellsouth.net 12. http://feenix.eyep.net/ 13. http://www.xfree.org/ 14. http://home.c2i.net/dark/linux.html 15. news:comp.os.linux.x 16. http://www.microsoft.com/typography/fontpack/default.htm 17. http://rpmfind.net/linux/RPM/contrib/noarch/noarch/webfonts-1-3.noarch.html 18. http://metalab.unc.edu/pub/Linux/X11/fonts/ 19. http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/ 20. http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz 21. http://home.c2i.net/dark/linux.html#ttf 22. http://www.xfree86.org/4.0/ 23. http://www.joerg-pommnitz.de/TrueType/ttmkfdir.tar.gz 24. http://www.kde.org/ 25. http://www.ghostscript.com/ 26. http://linuxdoc.org/HOWTO/XFree86-Video-Timing-HOWTO.html 27. http://www.linuxdoc.org/HOWTO/Font-HOWTO.html 28. http://www.moisty.org/~brion/linux/TrueType-HOWTO.html 29. http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/ 30. http://home.c2i.net/dark/linux.html 31. http://X-TT.dsl.gr.jp/ 32. http://help.netscape.com/kb/consumer/19960513-54.html 33. http://www.rodsbooks.com/wpfonts/ 34. http://www.xfree86.org/ 35. http://www.xfree86.org/4.0/fonts.html 36. http://www.microsoft.com/typography/fontpack/default.htm 37. http://rpmfind.net/linux/RPM/contrib/noarch/noarch/webfonts-1-3.noarch.html 38. http://www.fontsmart.com/fonts.htm 39. http://www.freewareconnection.com/fonts.html 40. http://www.will-harris.com/fonts/freefonts.htm 41. http://feenix.eyep.net/xstuff/xfs.html