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