35.3. 安裝與設定字型

SUSE Linux 上安裝其他字型非常簡單。只要將字型複製到位於 X11 字型路徑中的任何目錄即可 (請參閱 節 35.3.2, "X11 核心字型")。要啟動字型的使用,它的安裝目錄必須是 /etc/fonts/fonts.conf 中設定的目錄的子目錄 (請參閱 節 35.3.1, "Xft")。

字型檔案必須手動方式 (以 root 身份) 複製到適當的目錄,例如 /usr/X11R6/lib/X11/fonts/truetype。此外,這個作業可以透過「KDE 控制中心」中的 KDE 字型安裝程式來執行。結果完全相同。

您也可以建立符號連結,來替代複製實際字型。例如,如果您擁有裝載 Windows 分割區上的授權字型並且想要使用它們,便可能需要這樣做。然後,請執行 SUSEconfig--module fonts

SUSEconfig--module fonts 會執行程序檔 /usr/sbin/fonts-config,來處理字型的組態。如需這個程序檔的執行內容,請參閱程序檔的手冊頁 (manfonts-config)。

點陣字型、TrueType 與 OpenType 字型以及 Type1 (PostScript) 字型的程序完全相同。所有這些字型類型可以安裝至任何目錄。只有 CID-keyed 字型的程序稍有不同。相關資訊請參閱 節 35.3.3, "CID-Keyed 字型"

X.Org 含有兩種完全不同的字型系統:舊式 X11 核心字型系統和新設計的 Xft 與 fontconfig 系統。以下數節簡短描述這兩種系統。

35.3.1. Xft

從一開始,Xft 的程式設計人員便保證,會支援平滑美觀的可縮放字型。如果使用 Xft,字型將由使用字型的應用程式處理,而不是如 X11 核心字型系統那樣由 X 伺服器處理。在這種方式,個別的應用程式需要存取實際字型檔並完全控制文字符號的處理方式。多種語言文字的正確顯示基礎便是由此構成。直接存取字型檔對於在列印中內嵌字型,來保證列印出的外觀和螢幕輸出一致非常有用。

在 SUSE Linux,KDE 和 GNOME 二個桌面環境、Mozilla 以及其他許多應用程式已經預設使用 Xft。越來越多的應用程式已經從舊 X11 核心字型系統改用 Xft。

Xft 使用 fontconfig 程式庫來尋找字型以及操作字型的處理方式。fontconfig 的內容是由全域組態檔 /etc/fonts/fonts.conf 和使用者專屬組態檔 ~/.fonts.conf 控制。這些 fontconfig 組態檔每一個都必須以下列開頭

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

並以下列結束

</fontconfig>

要新增字型搜尋目錄,請附加下列行:

<dir>/usr/local/share/fonts/</dir>

不過,通常並不需要這樣做。依預設,使用者專屬目錄 ~/.fonts 已經輸入到 /etc/fonts/fonts.conf 中。因此,安裝額外的字型時,只要將它們複製到 ~/.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)、serifmonospace。這些都不是真實的字型,而是可以解析為適當字型的別名,視語言設定而定。

使用者很容易在 ~/.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 可傳回所有字型的清單。要找出含有希伯來文 (:lang=he) 所有文字符號的可用縮放字型 (:outline=true)、這些字型的名稱 (family)、樣式 (style)、粗細 (weight) 以及包含這些字型的檔案名稱,請輸入下列指令:

fc-list ":lang=he:outline=true" family style weight

這個指令的輸出看起來如下:

    
FreeSansBold.ttf: FreeSans:style=Bold:weight=200
FreeMonoBoldOblique.ttf: FreeMono:style=BoldOblique:weight=200
FreeSerif.ttf: FreeSerif:style=Medium:weight=80
FreeSerifBoldItalic.ttf: FreeSerif:style=BoldItalic:weight=200
FreeSansOblique.ttf: FreeSans:style=Oblique:weight=80
FreeSerifItalic.ttf: FreeSerif:style=Italic:weight=80
FreeMonoOblique.ttf: FreeMono:style=Oblique:weight=80
FreeMono.ttf: FreeMono:style=Medium:weight=80
FreeSans.ttf: FreeSans:style=Medium:weight=80
FreeSerifBold.ttf: FreeSerif:style=Bold:weight=200
FreeSansBoldOblique.ttf: FreeSans:style=BoldOblique:weight=200
FreeMonoBold.ttf: FreeMono:style=Bold:weight=200

可以使用 fc-list 來查詢的重要參數:

表格 35.2. fc-list 的參數

參數

意義及可用值

family (系列)

字型系列的名稱,例如,FreeSans

foundry (製造商)

字型的製造商,例如,urw

style (樣式)

字型樣式,例如,Medium (中)Regular (一般)Bold (粗體)Italic (斜體)Heavy (濃)

lang (語言)

字型支援的語言,例如,de 表示德文、ja 表示日文、zh-TW 表示繁體中文、zh-CN 表示簡體中文。

weight (粗細)

字型粗細,例如,80 表示一般,200 表示粗體。

slant (斜度)

通常,斜度 0 表示沒有斜度,100 表示斜體。

file (檔案)

字型檔案的名稱。

outline (外框)

true (真) 表示外框字型,false (偽) 表示其他字型。

scalable (縮放)

true (真) 表示縮放字型,false (偽) 表示其他字型。

bitmap (點陣)

true (真) 表示點陣字型,false (偽) 表示其他字型。

pixelsize (點大小)

以點表示的字型大小。這個選項和 fc-list 一起使用時只對點陣字型有意義。

35.3.2. X11 核心字型

目前,X11 核心字型系統不僅支援點陣字型,也支援縮放字型如 Type1 字型、TrueType 與 OpenType 字型,以及 CID-keyed 字型。Unicode 字型的支援已經有一段時間。X11 核心字型系統最早於 1987 年針對 X11R1 的黑白點陣字型處理而開發。以上所述的擴充是在之後新增的。

縮放字型僅只支援不需要消除鋸齒及子像素 (subpixel) 處理的字型,含有更多語言的文字符號的縮放字型所需的載入時間也越長。Unicode 字型的處理速度較慢而且需要更多的記憶體。

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 伺服器已經啟動,裝載目錄中新安裝的字型可以透過指令 xset  fp rehash 來設成可用。這個指令以 SUSEconfig --module fonts 執行。 由於指令 xset 必須存取執行中的 X 伺服器,因此只有在 SUSEconfig --module fonts 是從可存取之執行中 X 伺服器的外圍程序啟動時才有效。最簡單的達成方法是輸入 su 與 root 密碼來取得 root 權限。su 可以將啟動 X 伺服器的使用者的存取權限轉移給 root 外圍程序。要檢查字型是否安裝正確以及是否可以透過 X11 核心字型系統來使用,請使用 xlsfonts 指令來列出所有可用字型。

依預設,SUSE Linux 使用 UTF-8 語言環境。因此,最好使用 Unicode 字型 (在 xlsfonts 的輸出中,字型名稱的結尾為 iso10646-1)。xlsfonts  | grep iso10646-1 可以列出所有可用的 Unicode 字型。SUSE Linux 附隨的 Unicode 字型絕大部份都具有歐洲語言 (舊編號方式為 iso-8859-*) 所需的文字符號。

35.3.3. CID-Keyed 字型

和其他字型類型相反,您無法將 CID-keyed 字型安裝在任一目錄。CID-keyed 字型必須安裝在 /usr/share/ghostscript/Resource/CIDFont。這和 Xft 與 fontconfig 無關,但是對 Ghostscript 和 X11 核心字型系統卻是必要的。

[Tip]提示

請參閱 http://www.xfree86.org/current/fonts.html 來取得 X11 的字型詳細資訊。