在我们深入探讨在 X Window 系统下设置 TrueType 字体之前,我们应该先回顾一下点和像素之间的区别……以及为什么我们需要关注这些区别。
所有显示的字体都以点为单位进行测量。一英寸正好是 72 点。为什么是 72?部分原因是机械排字机的局限性,部分原因是因为它可以被 2、3、4、6、8、9、12、18 和 24 整除。同样值得注意的是,PostScript 中的默认单位也是点。
(历史注释:我说谎了。在 PostScript 出现之前,一英寸实际上是 72.27 点,但那个点尺寸是在机械印刷机时代设定的,当时的金属活字只有少数几种标准尺寸。有了计算机显示器和激光打印机,我们可以轻松获得任何尺寸的字体,而且由于上述原因,72 这个数值更加合理。)
作为一般规则,大多数文本应介于 7 到 12 点之间。任何小于 6 点的字体实际上都是“小字号”。行式打印机使用 9 或 12 点字体(分别对应 8 或 6 行/英寸)。
相比之下,所有视频驱动程序最终都必须以像素为单位测量字体。对于您的视频驱动程序来说,您的屏幕是 1024x800 像素,而不是 10 英寸乘 8 英寸(或 720 点乘 576 点)。
要从点(我们用它来指定字体大小)映射到像素(我们用它来位块传输视频内存),我们必须知道屏幕的分辨率。这通常以“每英寸点数 (dpi)”来衡量,尽管它实际上是每英寸像素数。这些单位用于 XFree86 附带的两组位图字体:fonts-75
旨在用于分辨率约为 75 dpi 的低端显示器,fonts-100
旨在用于分辨率约为 100 dpi 的中端显示器。没有位图字体旨在用于分辨率超过 120 dpi 的高端显示器。
作为一个具体的例子,一个 13 英寸对角线屏幕(11.1 英寸可用)显示 640x480 像素图像的分辨率为 72.0 dpi。这绝非巧合。事实上,大多数网页(和 Microsoft 应用程序)都是围绕分辨率正好为 72 dpi 的标准显示器设计的。XFree86 的默认配置假定显示器的分辨率为 75 dpi。
回到现实世界,现在已经没有人使用 640x480 视频了。也没有人再使用 13 英寸对角线屏幕了。由于显卡的改进速度比视频显示器更快,因此拥有像我这样的配置并不罕见:19 英寸对角线屏幕(17+ 英寸可用),1600x1200 像素,117 dpi 分辨率。
如果我运行默认的 X 配置,我所有的字体大约只有预期大小的 2/3。毫不夸张地说,所有字体都被缩小了一个完整尺寸:大字体(12 点)看起来像中等字体(9 点)。中等字体(9 点)看起来像小字体(6 点)。
我们可以做三件事来解决这个问题。首先,我们应该告诉 X 服务器我们实际的屏幕分辨率
/etc/X11/xdm/Xservers
#:0 local /usr/X11R6/bin/X -bpp 16
:0 local /usr/X11R6/bin/X -bpp 16 -dpi 120
其次,我们应该确保我们优先使用 100 dpi 的位图字体,而不是 75 dpi 的字体。
/etc/X11/XF86Config
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
EndSection
最后,如果我们没有位图字体与所需字体完全匹配,X
服务器将尝试通过像素复制“缩放”类似的字体。结果通常令人不悦。假设我们有一个性能足够强大的系统,我们可以告诉服务器默认使用缩放字体,然后使用完全匹配的位图字体,最后才使用缩放的位图字体。
/etc/X11/XF86Config
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
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/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
我刚刚得知,如果显卡和显示器都支持 DDC 通信,XFree86 将支持 DDC 通信。这将允许 X 服务器查询显示器的物理尺寸,服务器将自动计算正确的 DPI 设置。
您仍然需要对字体路径进行相应的更改,因为服务器不应猜测您的显式配置。
X
配置文件之前的准备工作。
每当我们修改 X11 配置文件时,最好先禁用 XDM,方法是在文件顶部附近添加 exit 0
。 如果您不这样做,并且 X 由于某种原因无法启动,XDM 会使您的系统陷入一个糟糕的死循环,这会带来难以形容的麻烦。 警告。