|
以下文章是從
http://www.linuxhall.org/modules.php?name=News&file=article&sid=92
轉載的:
作者:zunix
提供團體:香港 Linux 用家協會
Linux 上的文字顯示架構
首先要了解 Linux 上如何顯示文字,在 Linux 上的顯示圖形介面的伺服器的名字是 X Server,這個 X Server 是由美國 MIT 大學和 Digital Equipment Company 在1984 年合作研製的 X Window 衍生出來的,這個伺服器的其中一個工作是管理所有顯示和輸入設備、如顯示咭、滑鼠、鍵盤及手寫板等。而一個工作是為視窗系統提供一切的圖像架構和這篇主題所說的文字。文字庫則由一個字型伺服器所管理,在近期的發展亦有趨勢棄用字型伺服器,而直接由 X Server 管理,無論是用那一種架構,X Server 都必需與描繪字型的軟件配合,如果缺乏這個支援 X Server 根本無法在螢幕上顯示出任何文字,這個軟件的名稱是 FreeType,現時的版本是 2.1.4。這個軟件對於顯示全真字型 (TrueType Font) 有良好的表現,但這是對於歐洲的字型而言,對於亞洲的圖像文字仍有所不足。
http://www.linuxhall.org/images/article/font-hinting/stardict-view.png
HINTING (提示) 技術
在最新發展的 X Server 上還採用了一種名為字型家族 (Fonts Family) 的技術,技術的原理很簡單,它將一組組的不用國家字型分類並編在一起,同時亦在定義上標明代示的國家名字代號,在這種架構之下,無論當前桌面是選用了那一種字型,祗要是字型家族中的成員,系統就會自動採用該國家名字代號之下的指定字型。
不同的字體結構
在 Linux 上使用的字型大致上有兩種,第一種是 Type 1 字型,Type 1 字型是一種點陣圖字型 (Bitmap Font),其特性是不適合改變字型呎碼,改變會導致破壞字型,通常系統使用這種字型要預先收藏了一套不同呎吋來配合實際需要。如以往 Linux 用的台北字型 (Taipei Fonts) 就特定有 16 點、20 點及 24 點之三種呎吋。另一種是近年正式納入的全真字型,全真字型是可以自由縮細和放大,故此採用了全真字型就不需要同時安裝多條不同點數的字型,因為一字型已經化表所有的點數(point)。說來是很理想,但有兩個缺點,第一個是全真字型的體積很大,第二是放大時多會出現鋸齒邊,要克服鋸齒邊就需要描繪字型的軟件的協助。這種效果在 Linux 上常用一個上「無鋸齒邊效果」的術語。現時的 Linux 桌面幾乎全用採用上全真字型,另外補充一句,顯示全真字型是蠻吃系統資源的。
Linux 上的字型
Linux 上的字型有上述的全真體字型和 Type 1 字型,其中的中文字型有免費而開放的文鼎楷體和細明體是屬於全真字型,而 Type 1 中文字則有台北字型和倚天字型,現在差不多所有的中文使用介面都用上了文鼎的全真字型,可是文鼎字型有很多的不足,首先要說的是字型的存庫不足,這個現像在繁體之上並不顯著,但在簡體之應用上就常出現缺字的情況,另一個缺點是字型不美觀,這只可怪罪在免費之上,如果文鼎字體配合上無鋸齒技術,其效果就會出現字體色調不均,與其說是無鋸齒,不如說是字體化開了,看起來既不美觀也不容易。從這個角度來看,無鋸齒技術比較適合歐洲的符號文字。
最後還有一問題,那是不可以在同一個語言環境中處理多種不同國家定義的文字,如中文簡體和中文繁體,處理這個問題原完要靠軟件本身的語言設定支援。即使軟件有這個支援也要逐一國家的設定。上述的「字型家族」技術對這個問題是無補於事。
對於上述問題的解決方案是需要一種統一而字庫要大兼且一字型多碼的字型。環顧四週這個的答案現時即可用的只有一個,那是使用上Windows 上之新細明體,使用 Windows 的新細明體有甚麼好處?第一是字庫龐大,就連香港一些口語化的字型也有。第二是字型美觀,而亦不需要無鋸齒技術協助。最後的一個最重要的是一字八碼,這個案型同時擁有中繁簡日韓的字碼。使用它可謂一努永逸。這種字型可說是全真字型字集,所以用 ttc 那使廷伸格式。
http://www.linuxhall.org/images/article/font-hinting/destructed-fonts-without-hinting-support.png
這個很好的解決方案還剩下一個問題,那是文字的使用 License 問題,首先下一個假設是使用者有購入一個 Windows 的使用証,即擁有一個 Windows 的使用權,大約兩年前一位日本的專家為 Linux 使用全真字而研究 Windows 的使用 License,而發現在這方面原全無提及任何的限制。所以在使用上理論上應還可以。
http://www.linuxhall.org/images/article/font-hinting/openoffice.png
如何加入新的字款
明白上述的原理和背景之後就可以進行加入新細明體的設定,首先是要為上述的文字伺服器加入新細明字型,方法很簡單。首先請重新用系統管理人身份登入,即 root 身份的戶口。
1. 在程式選單上的附屬應用程式中選"文字編輯器"
2. 使用文字編輯器開啟 /etc/X11/fs 目錄中的 config 文案來修改
3. 在字庫收藏目錄名單上加入新的目錄路徑 ,/usr/share/fonts/ttf/
例子:(請留意標點符號)
catalogue = /usr/lib/X11/fonts/Type1/,
/usr/lib/X11/fonts/CID/,
/usr/lib/X11/fonts/Speedo/,
/usr/lib/X11/fonts/misc/,
/usr/lib/X11/fonts/cyrillic/,
/usr/lib/X11/fonts/100dpi/,
/usr/lib/X11/fonts/75dpi/,
/usr/share/fonts/zh_CN/TrueType/,
/usr/share/fonts/zh_TW/TrueType/,
/usr/share/fonts/ttf/
字型伺服器的設定字有關字庫的一段,雖與內的排列有異,但是同一效果,分別只是寫成一行和每條字庫路徑轉行。
4. 將修改好的文案儲存及關閉
5. 在桌面上點選打開中個檔案管理員 (像以 "XXX 的個人目錄" 名稱)
6. 利用圖示向上瀏覽箭咀,向上走至系統目錄的最高層,沿後進入 /usr/share/fonts 這個目錄
7. 在 /usr/share/fonts 目錄中建立 ttf 這個新的目錄,方法是可用滑鼠右鍵拉出選單,在上選取建立新目錄,再改名為 ttf
8. 將 Windows 的新細明體 (mingliu.ttc) 抄入這個 ttf 目錄之中
9. 建立一個名為 font.dir 的文案在 ttf 目錄之中,其作用是該目錄的字型索引,使用文字編輯器寫一個並儲存為 font.dir 便可以,font.dir 的內容如下:
(註:如果是使用 GTK2 支援 的程式,fonts index 是不須要的)
8
mingliu.ttc -Dynalab-MingLiU-medium-r-normal--0-0-0-0-m-0-iso10646-1
mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-big5-0
mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-gb2312.1980-0
mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-koi8-r
mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-koi8-u
mingliu.ttc -DynaLab-MingLiU-medium-r-normal--0-0-0-0-c-0-koi8-e
mingliu.ttc -Dynalab-MingLiU-medium-r-normal--0-0-0-0-m-0-iso8859-1
mingliu.ttc -Dynalab-MingLiU-medium-r-normal--0-0-0-0-m-0-jisx0201.1976-0
上述的步驟已經將字加入了 Linux 系統之內,餘下是要改良 FreeType 。
改良 Linux 上的文字顯示效果
這個步驟對於讀者來說有一些吃力,道先要下載這個預先修改了的源碼 RPM 套件,由於涉及一些專利,所以不便為各位預製一個。
http://www.linuxhall.org/~zunix/reader/freetype-2.1.3-6.src.rpm.tar.gz
假設下載的位置是 /root ,下載之後的步驟如下:
1. 開啟一個終端機 (在程式選單的系統工具選取)
2. 在終端機內使用指令將下載回來的解壓
例: tar zxvf /root/freetype-2.1.3-6.src.rpm.tar.gz
3. 將套件重新編譯
例: rpmbuild --rebuild /root/freetype-2.1.3-6.src.rpm
讀者應會遇到一些欠缺套件的警告,請仔細將欠缺的套件由安裝 Cdrom 中取出並安裝,之後重新用上述指令編譯一次。完成後的 RPM 將在儲存在 /usr/src/redhat/RPMS/i386 目錄之中。
4. 將所有的 RPM 安裝上系統取代舊有的 FreeType (這處只適用於 Red Hat 9)
例:rpm -Uvh --force /usr/src/redhat/RPMS/i386/*.rpm
5. 將字型家族的設定案改為支援 HINTING 技術
字型家族的設定案的位置: /etc/fonts/fonts.conf
在設定案中會找到下的一段,將 <string>zh</string> 那一節的下兩行的 <bool>false</bool> 中的 false 改為 true (如下)
http://www.linuxhall.org/images/article/font-hinting/font.config-in-terminal.png
在 Linux 上如何設定字款
設定完成後請再登出一次,新的設定就生放,最後的工具便是在桌面偏好設定選取字型來設定字型,新細明體的英文名稱是 PMingLiU,選取後可以同時"不平滑化"的設定。
這篇的技術是有一些深澳的,如果遇有問題請給我的來電郵。
(原文在 PcWeekly (2003 夏季) 副刊工具書中載登) |
|