x-window字型原理及美化(轉)

BSDLite發表於2007-08-15
x-window字型原理及美化(轉)[@more@]1. 簡介

在我必須處理的一堆討厭事中,有一項就是沒完沒了的 X 預設字型和字型設定 (我專指 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 字型伺服器 (font server) xfstt,和使用 K Desktop Environment 1.1 的功能來調整許多應用程式的字型設定,包含設定讓非 KDE 應用程式的顏色和字型能夠與 KDE 一致。

歡迎評論,更正,增補和批評。您可以在 聯絡到我。
1.1 更新紀錄

* 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。將請求援助的部份移除。

2. XF86Config 檔

要想解決字型的問題,首先先得看看 XF86Config 檔。(通常放在 /usr/X11/lib/X11/XF86Config 或 /etc/X11/XF86Config)。您猜到了嗎? 這個檔中關於字型最重要的部份就是 FontPath。在我們研究它之前,最好先檢查 X 的其它設定。錯誤的螢幕設定比錯誤的字型設定更令人頭痛。確定您螢幕的更新頻率 (refresh rate) 在正常使用範圍中已經設到最高 (85Hz 很好,75Hz 普通,60 Hz 很不舒服)。
2.1 設定 FontPath

用您最順手的文字編輯器來編輯 XF86Config。在檔案的開頭,您應該會看到類似下面的東西:

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/"

FontPath 告訴 X 到那裡去找在螢幕上顯示用的字型。順序是很重要的,當一個 X 的應用程式向 X 要求使用一些字型,X server 通常偏好使用正在用的字型。然後它去看看 FontPath,使用最先看到能滿足 X client 要求的字型。

預設的 FontPath 通常將 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。桌面是不是已經比較漂亮呢?

3. X server 命令列選項 (command line options)

下面一件要做的事是調整 X server 的命令列選項。您將會想要用 -dpi 來指定顯示的解析度是每英□幾點。現在很多的系統使用高解析度的顯示器,可能它們將會要用 100dpi。

若您在 console 下啟動 X,鍵入

startx -dpi 100

若您用 xdm 這種圖形登入介面,您需要編輯您的 /usr/X11/lib/X11/xdm/Xservers 檔。在裡面有 Xserver 的命令列。我的檔案裡有下面這一行

:0 local /usr/X11R6/bin/X -dpi 100 -gamma 1.6

您可在 X 和 Xserver 的 manpage 中找到更多的資訊。

4. TrueType 字型 (少數 Windows 做的很好的事情)

因為在 Redmond 的那群傢伙非常關心他們軟體的外觀而不是內容,他們在 Windows 里加上對 TrueType 字型的支援。Window 95 和其它的 Windows 都內含 Arial,Times New Roman,和 Courier New。他們約等於 Helvetica,Times,和 Courier。TrueType 字型是能縮放的,所以它們在放大時很好看,而它們也被好好的調整過,故在縮小的時候依然可讀。有許多的 Windows 應用程式附送好幾打的 TrueType 字型。先別急著把您的 Windows CD 拿去微波,您得先拿到這些字型。
4.1 xfstt

不幸的是 XFree86 並沒有內部支援 TrueType 字型,所以必須自己加入。最簡單的方式使用 xfstt,一個沒鋂的 TrueType 字型伺服器。(譯註: 這裡沒鋂是 free,嚴格來說,並不是沒鋂,而是自由的意思)
Installation

xfstt 安裝非常容易。首先從網站上下載 tarball。最新的版本是

有了 tarball後,把它解開

tar -zxvf Xfstt-0.9.10.tgz

然後編譯和安裝它。INSTALL 檔有簡單的說明。有個不用大腦的方法 make; make install 就可以了。當做好後,把由各式管道取得的 TrueType 字型複製到 /usr/ttfonts 就可以了。鍵入下面的指令來啟動 xfstt

xfstt --sync # 更新 xfstt 的字型資料庫
xfstt & # 在背景執行 xfstt

然後鍵入

xset +fp unix/:7100 # 讓 X 使用 xfstt

或是在您的 XF86Config 檔中加入下面的指令,讓 X 使用這項服務

FontPath "unix/:7100"

調整預設字型的大小

若您的 TrueType 字型顯得相當小,下面的指令可能有幫助

在 X server 命令列加上 -dpi (請參考第 3 章)。

使用 --res 來告訴 xfstt 增加預設的解析度。用下面的指令

xfstt --res 120

4.2 xfs

xfs 是另一種字型伺服器的選擇。它已經包含在以 RedHat 為基礎的 distribution 中。xfs 是基於 FreeType Font library,提供了類似於 xfstt 的功能。xfs 不只能處理 TrueType 和 Type 1 字型,也可以對付原本的 X 字型。
安裝

第一步是將 TrueType 字型加入您的 linux 裡。su 為超級使用者,建一個目錄來存放這些字型:

mkdir /usr/share/fonts/ttfonts

然後將字型放入這個目錄裡。您可以從您的 Windows 系統中複製過去

cp /mnt/win/path_to_fonts/*ttf /usr/share/fonts/ttfonts/

或是從 Microsoft 直接下載。

這些字型是自解壓縮的 zip 檔。您仍可在 linux 中安裝

unzip

注意字型的檔名必須小寫。一個快速又容易的轉換方法是將他們複製到一個 DOS(FAT16) 檔案系統中,然後再複製回來。DOS 不處理大寫。另一個較像 linuxer 會用的方法是先進入到存放字型的目錄下,然後鍵入:

ls *TTF | while read f
do
[ -f "$f" ] && mv -f "$f" "`echo "$f" | tr A-Z a-z`"
done

您在鍵入每一行得時候會有 ">" 的提示符號,在上述每一行的最後按下 return。 注意標點符號 -- 那些 "backquotes" 很重要。當 TrueType 字型正確安裝後,以超級使用者執行:

ttmkfdir -o fonts.scale
mkfontdir

當您字型目錄下的內容改變後,重新執行上面的命令。接下來,編輯您的 xfs 字型設定檔案 /etc/X11/fs/config 在您字型表中加入您的 TrueType 字型:

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/misc,
/usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/Speedo,
/usr/share/fonts/default/Type1,
/usr/share/fonts/ttfonts,
/usr/X11R6/lib/X11/fonts/100dpi,
/usr/X11R6/lib/X11/fonts/75dpi

或是您也可以用 'chkfontpath --add ' 命令來加入字型。當使用時,您或許也會想要更改您的字型的預設點數。

default-point-size = 140

這讓我從預設的 12 點字變為 14 點字。有些 X 的應用程式使用這個,有些則否。接下來,確定您的 XF86Config 檔中的 FontPath 是

FontPath "unix/:-1"

注意 "unix/:7100" 也可以做到,但是在剛出來時無法使用。將所有的 FontPath 用 '#' 讓它變成註解,反正你也不用它們了。xfs 的 packages 應該和其它 XFree 的 packages 一起安裝了。要確定它是預設的服務,您可以使用 'ntsysv' 或是

chkconfig --add xfs

現在 xfs 在您每一次開機的時候都會啟動。 現在重新啟動 X 來讀入新的 FontPath。用下面的的方式 啟動/重新啟動 xfs

/etc/rc.d/init.d/xfs restart

現在您應該有個可以使用的字型伺服器了。您可以檢查那些字型有被使用

xlsfonts | less

或用 xfontsel 甚至更好的 gfontsel 來檢查它們。

5. KDE

在這段日子裡,KDE 是在 Linux 和 X 發生過最好的事情之一。它提供了一個一致的使用者介面,讓一般大眾能夠接觸 Linux。您可以在 找到更詳細的資料。為什麼我會在這大大稱讚它呢? 這是因為 KDE 1.1 有個新特色,能夠讓您程式的字型和顏色與現在的 KDE 風格一致,這也包括非 KDE 的應用程式。
5.1 應用 KDE 的字型和顏色於非 KDE 的應用程式上

這很簡單。只要開啟 KDE 的控制中心(Control Center)下面的 Desktop 下面的 style。那裡有個選項叫做 "Apply fonts and colors to non-KDE apps"(將字型與顏色應用到非 KDE 的應用程式),開啟他,選 OK,這樣就好了! 下次您開啟許多的應用程式,它們就會像其它的 KDE 應用程式般,有相同的顏色與字型。有些人最喜歡這項特色,但若您不喜歡的話,您也可以將它關掉。

6. 在特定的應用程式中調整字型

6.1 Netscape Navigator/Communicator

Netscape Communicator 對於字型的問題相當的敏感。若您使用預設的 FontPath,您的字型將會非常小非常醜。您第一件要去做的事情就是修改您的 XF86Config 檔中的 FontPath (參考第二章)。使用 100dpi 的字型大大的改善了可讀性。您也會想要去檢查在 Edit/Preferences/Appearance/Fonts 的字型設定。不選 Font 選項中的 "Allow Scaling" 可以讓點陣字不會鋸齒狀。

若您有 xfstt 或 xfs,Netscape 非常適合使用 TrueType 字型。然而,它不能得體的處理 xfstt 的銳角。在 Edit/Preferences 中,您可以將 TrueType 字型設為固定寬度或是可變寬度,然而當您關閉 Netscape 後,它將不記得您選取的字型點數。若您在開啟 X 時未用 -dpi 或是在 xfstt 未使用 --res,您的字型將會很小。當我用了上面兩個修正,TrueType 字型真的很棒!
6.2 WordPerfect

即將登場。
6.3 StarOffice

即將登場。

7. 致謝

本 HOWTO 是由 Doug Holland 所撰寫

外加 Hal Burgies 的貢獻。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-959803/,如需轉載,請註明出處,否則將追究法律責任。

相關文章