X Window 系统 (X11) 是 UNIX 中图形用户界面的实际标准。X 是基于网络的,可以使在一个主机上启动的应用程序显示在通过任何类型的网络(LAN 或 Internet)连接的另一个主机上。本章介绍了 X Window 系统环境的安装和优化,并提供了关于在 SUSE® Linux Enterprise Desktop 中使用字体的背景信息。
默认设置下,以第 5.2 节 “Setting Up Graphics Card and Monitor” (第 5 章 Setting Up Hardware Components with YaST, ↑部署指南)中所述用 SaX2 界面配置 X Window 系统。或者可以通过编辑其配置文件手动配置它。
![]() | 错误的 X 配置可能会损坏您的硬件。 |
|---|---|
配置 X Window 系统时要小心。在完成配置前,切勿启动 X Window 系统。错误配置的系统可能会对您的硬件造成无法修复的损坏(此情况尤其针对于固定频率的监视器)。该书和 SUSE Linux Enterprise Desktop 的创建者不对导致的任何损坏负责。这里提供的信息已经仔细斟酌,但并不能保证所提供的所有方法均正确且不会对您的硬件造成任何损坏。 | |
命令 sax2 会创建 /etc/X11/xorg.conf 文件。这是 X Window 系统的主配置文件。请在此查找与图形卡、鼠标和监视器有关的所有设置。
![]() | 使用 X -configure |
|---|---|
使用 X -configure 配置您的 X 安装(如果之前尝试 SUSE Linux Enterprise Desktop 的 SaX2 失败)。如果您的安装涉及专有的仅二进制驱动程序,则 X -configure 不起作用。 | |
下面小节介绍配置文件 /etc/X11/xorg.conf 的结构。它由多个部分组成,每个部分处理配置的某个特定方面。每个部分都以关键字 Section <designation> 开头,以 EndSection 结尾。以下惯例适用于所有章节:
Section "designation" entry 1 entry 2 entry n EndSection
表 14.1 “/etc/X11/xorg.conf 中的部分” 中列出了可用的部分类型。
表 14.1. /etc/X11/xorg.conf 中的部分¶
下面详细介绍 Monitor、Device 和 Screen。X.Org 和 xorg.conf 的手册页提供了有关其他部分的详细信息。
xorg.conf 中可以存在多个不同的 Monitor 和 Device 部分。甚至可以存在多个 Screen 部分。ServerLayout 部分确定使用其中哪个部分。
Screen 部分将 Monitor 部分与 Device 部分结合起来并确定要使用的分辨率和颜色深度。Screen 部分与例 14.1 “文件 /etc/X11/xorg.conf 的 Screen 部分” 类似。
例 14.1. 文件 /etc/X11/xorg.conf 的 Screen 部分¶
Section "Screen"DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1152x864" "1024x768" "800x600"
Virtual 1152x864
EndSubSection SubSection "Display" Depth 24 Modes "1280x1024" EndSubSection SubSection "Display" Depth 32 Modes "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" EndSubSection Device "Device[0]" Identifier "Screen[0]"
Monitor "Monitor[0]" EndSection
Device 部分描述特定的图形卡。您可以在 xorg.conf 中包含任意多个设备项,前提是要使用关键字 Identifier 对这些项的名称进行区分。如果您安装了多个图形卡,通常按顺序对这些部分进行编号。第一个设备称为 Device[0],第二个设备称为 Device[1],依此类推。以下文件是从安装有 Matrox Millennium PCI 图形卡(由 SaX2 配置)的计算机的 device 部分摘出的一段:
Section "Device" BoardName "MGA2064W" BusID "0:19:0"Driver "mga"
Identifier "Device[0]" VendorName "Matrox" Option "sw_cursor" EndSection
还可以通过其他选项影响 X 服务器或驱动程序的行为。在 Device 部分中设置的选项 sw_cursor 就是这方面的一个示例。此选项取消激活硬件鼠标光标并使用软件显示鼠标光标。根据驱动程序模块,有不同的选项可用(它们位于目录 /usr/share/doc/packages/ 中驱动程序模块的描述文件中。通常还可以在手册页(man package_name xorg.conf、man 4 和 man <driver module>4 )中找到有效的选项。
chips
如果图形卡有多个视频连接器,可以将这一个卡的不同设备配置为单一视图。使用 SaX2 以这种方式对图形接口进行设置。
与 Device 部分类似,Monitor 和 Modes 部分分别描述一个监视器。配置文件 /etc/X11/xorg.conf 可以包含任意多个 Monitor 部分。每个 Monitor 部分使用行 UseModes(如果可用)引用一个 Modes 部分。如果没有 Modes 部分可用于 Monitor 部分,X 服务器将根据常规同步值计算相应值。服务器布局部分指定相关的 Monitor 部分。
只有有经验的用户才可以设置监视器定义。modeline 是 Monitor 部分的重要部分。方式行设置相应分辨率的水平定时和垂直定时。Monitor 部分储存有监视器属性(特别是所允许的频率)。可以使用实用程序 cvt 生成 VESA 方式。有关更多信息,请参见 cvt man cvt 的手册页。
![]() | |
除非您对监视器和图形卡功能有深入了解,否则建议不要更改 modelien,因为这可能严重损坏监视器。 | |
如果您要创建自己的监视器描述,则应非常熟悉 /usr/share/X11/doc 中的文档。安装包 xorg-x11-doc 以查找 PDF 和 HTML 页面。
现在,很少需要手动指定方式行。如果您使用的是最新的多频同步监视器,则通常由 x 服务器通过 DDC 直接从监视器中读取允许的频率和最佳分辨率,如 SaX2 配置一节所述。如果由于某种原因无法执行此操作,请使用 X 服务器中包含的 VESA 方式之一。这种方式可用于大多数图形卡和监视器的组合。
在 SUSE Linux Enterprise Desktop 中安装附加字体非常简单。只需要将字体复制到位于 X11 字体路径中的任何目录即可(请参见 第 14.2.1 节 “X11 核心字体”)。要启用字体,安装目录应是 /etc/fonts/fonts.conf 中配置的目录的子目录(请参见第 14.2.2 节 “Xft”),或用 /etc/fonts/suse-font-dirs.conf 包含到此文件中。
以下是 /etc/fonts/fonts.conf 中的摘录。该文件是标准的配置文件,应适合大多数配置。它还定义包含的目录 /etc/fonts/conf.d。在此目录中,以两位数字开头的所有文件或符号链接均由 fontconfig 装载。有关此功能的更详细描述,请参见 /etc/fonts/conf.d/README。
<!-- Font directory list --> <dir>/usr/share/fonts</dir> <dir>/usr/X11R6/lib/X11/fonts</dir> <dir>/opt/kde3/share/fonts</dir> <dir>/usr/local/share/fonts</dir> <dir>~/.fonts</dir>
/etc/fonts/suse-font-dirs.conf 会自动生成,以引入应用程序(多为第三方程序,如 LibreOffice、Java 或 Adobe Reader)随附的字体。以下是典型项:
<dir>/usr/lib/Adobe/Reader9/Resource/Font</dir> <dir>/usr/lib/Adobe/Reader9/Resource/Font/PFM</dir>
要在整个系统安装其他字体,请手动将字体文件复制至适当的目录(如 root),例如 /usr/share/fonts/truetype。或者,可以使用 KDE 控制中心中的 KDE 字体安装程序来执行此任务。结果是一样的。
您还可以创建符号链接,而不复制实际字体。例如,如果已装入的 Windows 分区上的字体已获得许可并要使用,则可能要执行此操作。随后,运行 SuSEconfig --module fonts。
SuSEconfig --module fonts 执行脚本 /usr/sbin/fonts-config,该脚本处理字体的配置。有关此脚本的更多信息,请参见其手册页 (man fonts-config)。
上面的过程同样适用于位图字体、TrueType 和 OpenType 字体以及 Type1 (PostScript) 字体。可以将所有这些字体类型安装在任何目录中。
X.Org 包含两个完全不同的字体系统:旧的 和新设计的 系统。下面几节简要介绍这两种系统。
目前,X11 核心字体系统不仅支持位图字体,还支持可缩放字体(例如 Type1 字体)、TrueType 以及 OpenType 字体。X11 核心字体系统只在没有反锯齿处理和子像素显示的情况下支持可缩放字体,并且装载许多语言具有字形的大型可缩放字体可能需要较长的时间。也支持 Unicode 字体,但使用它们的速度比较慢,而且需要更多内存。
X11 核心字体系统带有一些固有缺陷。它已经过时,而且不再能以有意义的方式扩展。虽然为了实现向后兼容而不得不保留 X11 核心字体系统,但应尽可能使用更先进的 Xft 和 fontconfig 系统。
为了执行相应的操作,X 服务器需要知道它可使用的字体以及在系统中的哪些位置可找到这些字体。这由 FontPath 变量来处理,该变量包含所有有效系统字体目录的路径。在其中每个目录中,一个名为 fonts.dir 的文件会列出此目录中的可用字体。FontPath 由 X 服务器在启动时生成。它将在配置文件 /etc/X11/xorg.conf 的每个 FontPath 项中搜索有效的 fonts.dir文件。这些项位于 Files 部分。使用 xset q 可显示实际的 FontPath。运行时也可以使用 xset 更改该路径。要添加其他路径,请使用 xset+fp <path>。要删除不需要的路径,请使用 xset-fp <path>。
如果 X 服务器已经处于活动状态,则可以使用命令 xsetfp rehash 使装入的目录中新安装的字体可用。通过 SuSEconfig--module fonts 执行此命令。因为命令 xset 需要访问正在运行的 X 服务器,所以只有当从可以访问正在运行的 X 服务器的外壳启动 SuSEconfig---module fonts 时,此命令才能发挥作用。实现此操作最简单的方法是通过输入 su 和 root 密码获得 root 许可权限。su 会将启动 X 服务器的用户的访问权限转移到 root 外壳。要检查是否正确安装了字体以及是否可以通过 X11 核心字体系统使用字体,请使用命令 xlsfonts 列出所有可用字体。
默认情况下,SUSE Linux Enterprise Desktop 使用 UTF-8 区域设置。因此,应首选 Unicode 字体(xlsfonts 输出中以 iso10646-1 结尾的字体名称)。可以使用 xlsfonts| grep iso10646-1 列出所有可用的 Unicode 字体。几乎所有在 SUSE Linux Enterprise Desktop 中可用的 Unicode 字体都至少包括欧洲语言所需的字形(以前编码为 iso-8859-*)。
从一开始,Xft 的编程人员就确保该系统可以很好地支持可缩放字体(包括消除锯齿)。如果使用 Xft,则是由使用字体的应用程序显示字体,而不是像 X11 核心字体系统中由 X 服务器显示字体。采用这种方式,相应的应用程序能够访问实际字体文件并完全控制如何显示字形。这就为正确显示多种语言的文本奠定了基础。直接访问字体文件对于用于打印的嵌入字体非常有用,因为这样可以确保打印输出与屏幕输出看上去完全一样。
在 SUSE Linux Enterprise Desktop 中,两个桌面环境(KDE 和 GNOME)、Mozilla 和许多其他应用程序均已默认使用 Xft。使用 Xft 的应用程序在数目上已经超过了使用以前的 X11 核心字体系统的应用程序。
Xft 使用 fontconfig 库来查找字体并影响字体的显示方式。fontconfig 的属性由全局配置文件 /etc/fonts/fonts.conf 控制。应向 /etc/fonts/local.conf 和用户特定的配置文件 ~/.fonts.conf 添加特殊配置。所有这些 fontconfig 配置文件的开头必须是
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig>
并且结尾必须是
</fontconfig>
要添加用于搜索字体的目录,请追加类似下面内容的一行:
<dir>/usr/local/share/fonts/</dir>
但通常没有必要这样做。默认情况下,已经在 /etc/fonts/fonts.conf 中输入了用户特定的目录 ~/.fonts。因此,要安装附加字体,只需将它们复制到 ~/.fonts 即可。
您还可以插入用来确定字体外观的规则。例如,输入
<match target="font"> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match>
来禁用所有字体的反锯齿处理,或输入
<match target="font"> <test name="family"> <string>Luxi Mono</string> <string>Luxi Sans</string> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match>
来禁用特定字体的反锯齿处理。
默认情况下,大多数应用程序使用字体名称 sans-serif(或等效的 sans)、serif 或 monospace。它们不是真正的字体,而只是可解析为合适的字体(取决于语言设置)的别名。
用户可以方便地将规则添加到 ~/.fonts.conf 中,以将这些别名解析为他们喜欢的字体:
<alias> <family>sans-serif</family> <prefer> <family>FreeSans</family> </prefer> </alias> <alias> <family>serif</family> <prefer> <family>FreeSerif</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>FreeMono</family> </prefer> </alias>
因为几乎所有应用程序都默认使用这些别名,所以这几乎影响到整个系统。这样,您可以方便地在几乎所有位置都使用自己喜欢的字体,而无需在各个应用程序中修改字体设置。
使用 fc-list 命令可以查看已安装了哪些字体以及哪些字体可用。例如,命令 fc-list 返回所有字体的列表。要找出可用的可缩放字体 (:scalable=true) 中有哪些包含希伯来语 (:lang=he) 所需的所有字形、它们的字体名称 (family)、字型 (style)、粗细 (weight) 以及包含这些字体的文件的名称,请输入以下命令:
fc-list ":lang=he:scalable=true" family style weight
此命令的输出类似于下面:
Lucida Sans:style=Demibold:weight=200 DejaVu Sans:style=Bold Oblique:weight=200 Lucida Sans Typewriter:style=Bold:weight=200 DejaVu Sans:style=Oblique:weight=80 Lucida Sans Typewriter:style=Regular:weight=80 DejaVu Sans:style=Book:weight=80 DejaVu Sans:style=Bold:weight=200 Lucida Sans:style=Regular:weight=80
可以使用 fc-list 查询的重要参数包括:
表 14.2. fc-list 的参数¶
|
参数 |
含义和可能值 |
|---|---|
|
|
字体系列的名称,如 |
|
|
字体的制造商,如 |
|
|
字型,如 |
|
|
字体支持的语言,例如 |
|
|
字体粗细,例如 |
|
|
倾斜,通常 |
|
|
包含字体的文件的名称。 |
|
|
|
|
|
|
|
|
|
|
|
以像素为单位表示的字体大小。与 fc-list 一起使用时,此选项仅对位图字体有意义。 |
安装包 xorg-x11-doc 和 howtoenh 以更深入地了解 X11。有关 X11 开发的更多信息,请参见该项目的主页:http://www.x.org。
手册页中详细描述了包 xorg-x11-driver-video 随附的多个驱动程序。例如,如果使用 nv 驱动程序,在 man 4 nv 中可以找到有关此驱动程序的更多信息。
有关第三方驱动程序的信息位于 /usr/share/doc/packages/<package_name> 中。例如,x11-video-nvidiaG01 的文档在安装包之后位于 /usr/share/doc/packages/x11-video-nvidiaG01 中。