|
楼主 |
发表于 2003-5-4 13:37:31
|
显示全部楼层
下面文章为firefly所做
發表於: 星期四 二月 06, 2003 11:30 pm 文章主題: 中文字型完全解決方案 PART II(搶鮮速報)
--------------------------------------------------------------------------------
由於 XFree86 將? 4.3 版開始,加入 fontconfig 以及 Xft 字型技術,與 XFree86 原本的核心字型技術(XLFD)?K存,在可預見的將?恚貢有愈?碛嗟膽贸淌綍P棄古老的 XLFD 字型引擎,改採全新的 fontconfig & XFt 當作預設的字型引擎,所以,必須?早了解新的字型技術,到底有什麼優點。
我利用了新年假期,仔細地研究了 fontconfig & Xft,?K且完成了適用?喼薜貐^的 patch,由於研究過程的資料很繁雜,一時之間,無法做一個有系統的整理,先跟各位報告我所完成的部份:
一、解決字型破碎的根本問題。
我簡單地修改了 freetype2,將 BYTECODE INTERPRETER 給 enable。
二、增加 Xft 所缺少的粗體、粗斜體顯示。
由於 Xft 本?砭蜎]有粗體相關的設計,所以我修改了 fontconfig 的設定檔(/etc/fonts/fonts.conf),增加『偽粗體』的設定,?K且對 Xft 的字型載入程式動手腳,將粗體字向右 shift 一點(pixel),讓字看起?砭拖裾娴淖兇忠粯樱裕曳Q之為『偽粗體』。
三、解決某些字型字距過大的問題。
不論是否開啟了 antialias 都不會再有字型變形的問題。字距過大是因為某些字型的英數字型是固定字距,但因為含有 CJK 字型,所以系統會以 CJK 字型的寬度,當作英數字型的寬度,造成半形的英數字跟全形 CJK 字型一樣寬,這裡,我是修正 Xft,讓 Xft 將之當作可變字距解決的。
四、讓字型名稱(family name)可以具有英文名稱以外的名稱。
這麼說,可能還不是很清楚,我說明白一點好了,也就是像 M$ windows 一樣,可以看到?K使用中文的字型名稱,想像一下,您也可以告訴系統,我要用『新細明體』而不用像以前一樣,只能用『PMingLiU』這個名稱而已,再精確一點地說,字型系統可以同時接受『PMingLiU』以及『新細明體』這兩種名稱,字型系統會知道這指的是同一個字型,?K不會發生錯?y。
看起?砗孟癫皇呛苤匾挥弥形淖中兔Q,不是也可以用得很好嗎?是的,大多數的情況下,用不用中文名稱的確不是很重要,but!您要知道,很多人可能會使用數種或是數十種的字型,?碜龊唸蠡蚴敲佬g方面的工作,您能單?挠⑽淖中兔Q看出那是哪一種字體嗎?我想,應該很難吧!如果將英文字型名稱換成中文呢?是不是就一目了然了^^,所以讓我花費最多心力的,反而是這部份。
我寫『中文字型完全解決方案』的目的,?K不是教大家如何去 patch 程式,或是修改一堆設定檔;想想,您為什麼要浪費時間在解決字型的問題上!您?K不想做一個字型的專家,卻被逼得不得不去了解系統字型運作原理,這是何苦?碓眨。繛槭颤N就不能像 Windows 一樣,將字型 copy 到系統 fonts 目錄就馬上能使用?是的 fontconfig 的出現,就是要朝這個方面邁進。
如何使用 fontconfig?fontconfig ?棄了傳統 XLFD 的方式,您?K不需要自己去設定字型的詳細資料,只要簡單地將字型檔,複製到 /usr/share/fonts/ 之下,然後再下指令 fc-cache 即可,它會包辦一切後續動作,?K且字型立即生效,不需要像過去一般,結束階段作業,才能使用新字型。
看起?硪磺卸己芡昝啦皇菃幔咳欢懿恍业兀琭ontconfig 以及 Xft ?K未對?喼薜貐^的字型做完整的支援,如果(我是說如果)您仔細看過 fontconfig & Xft 的原始碼,您就知道,一切仍以西方世界主觀價值為主,身為?喼奕说奈覀儯闷?砜偸遣淮髮ξ叮挥凶约簞邮至恕
我一直沒有提到如何設定 fontconfig?其?,我不願意讓大家動手修改設定檔,真的,意義不大,增加困擾而已,我已經將大部分應該人工設定的部份,加入 fontconfig 的程式中,所以不需要再動手改它。
至於 Xft 部份,由於屬於系統層,不會與使用者直接接觸,所以,我就略過不提。
我 Patch 過的套件可以在這裡找到:
http://firefly.idv.tw/setfont-xft/RPMS/
想研究的話,Source RPMS 在這裡:
http://firefly.idv.tw/setfont-xft/SRPMS/
一定要更新的套件如下,如果您使用 GNOME 當作桌面環境,那麼以下三個套件就可以了。
http://firefly.idv.tw/setfont-xft/RPMS/freetype-2.1.3-3.i386.rpm
http://firefly.idv.tw/setfont-xft/RPMS/fontconfig-2.1-8.i386.rpm
http://firefly.idv.tw/setfont-xft/RPMS/Xft-2.1-5.i386.rpm
如果您用 KDE 3.0 以上,又想看到中文的字型名稱,請繼續下載以下兩個套件:
http://firefly.idv.tw/setfont-xft/RPMS/qt-3.1.1-5.i386.rpm
http://firefly.idv.tw/setfont-xf ... ork-0.49-3.i386.rpm
※※ 請注意!安裝過程如果出現相依性套件,多半是缺少了 xxxx-devel ,請下載缺少的套件即可,不必到處找。
※※ 目前只有 RedHat 8.0 的套件,如果您?K非使用 RedHat 8.0,請勿安裝,但您可以下載 Source RPMS,針對您的版本,略做更改重新編譯即可。
看螢幕快照在這裡:
http://firefly.idv.tw/setfont-xft/
好了,希望大家試用看看,如果有其他意見或更好的建議,請不吝賜教 |
|