[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章moto » 週三 2月 19, 2003 12:48 am

由於 XFree86 將從 4.3 版開始,加入 fontconfig 以及 Xft 字型技術,與 XFree86 原本的核心字型技術(XLFD)並存,在可預見的將來,慢慢地會有愈來愈多的應用程式會揚棄古老的 XLFD 字型引擎,改採全新的 fontconfig & XFt 當作預設的字型引擎,所以,必須儘早了解新的字型技術,到底有什麼優點。

我利用了新年假期,仔細地研究了 fontconfig & Xft,並且完成了適用亞洲地區的 patch,由於研究過程的資料很繁雜,一時之間,無法做一個有系統的整理,先跟各位報告我所完成的部份:

一、解決字型破碎的根本問題。
我簡單地修改了 freetype2,將 BYTECODE INTERPRETER 給 enable。

二、增加 Xft 所缺少的粗體、粗斜體顯示。
由於 Xft 本來就沒有粗體相關的設計,所以我修改了 fontconfig 的設定檔(/etc/fonts/fonts.conf),增加『偽粗體』的設定,並且對 Xft 的字型載入程式動手腳,將粗體字向右 shift 一點(pixel),讓字看起來就像真的變粗一樣,所以,我稱之為『偽粗體』。

三、解決某些字型字距過大的問題。
不論是否開啟了 antialias 都不會再有字型變形的問題。字距過大是因為某些字型的英數字型是固定字距,但因為含有 CJK 字型,所以系統會以 CJK 字型的寬度,當作英數字型的寬度,造成半形的英數字跟全形 CJK 字型一樣寬,這裡,我是修正 Xft,讓 Xft 將之當作可變字距解決的。

四、讓字型名稱(family name)可以具有英文名稱以外的名稱。
這麼說,可能還不是很清楚,我說明白一點好了,也就是像 M$ windows 一樣,可以看到並使用中文的字型名稱,想像一下,您也可以告訴系統,我要用『新細明體』而不用像以前一樣,只能用『PMingLiU』這個名稱而已,再精確一點地說,字型系統可以同時接受『PMingLiU』以及『新細明體』這兩種名稱,字型系統會知道這指的是同一個字型,並不會發生錯亂。

看起來好像不是很重要,不用中文字型名稱,不是也可以用得很好嗎?是的,大多數的情況下,用不用中文名稱的確不是很重要,but!您要知道,很多人可能會使用數種或是數十種的字型,來做簡報或是美術方面的工作,您能單從英文字型名稱看出那是哪一種字體嗎?我想,應該很難吧!如果將英文字型名稱換成中文呢?是不是就一目了然了^^,所以讓我花費最多心力的,反而是這部份。

我寫『中文字型完全解決方案』的目的,並不是教大家如何去 patch 程式,或是修改一堆設定檔;想想,您為什麼要浪費時間在解決字型的問題上!您並不想做一個字型的專家,卻被逼得不得不去了解系統字型運作原理,這是何苦來哉!?為什麼就不能像 Windows 一樣,將字型 copy 到系統 fonts 目錄就馬上能使用?是的 fontconfig 的出現,就是要朝這個方面邁進。

如何使用 fontconfig?fontconfig 拋棄了傳統 XLFD 的方式,您並不需要自己去設定字型的詳細資料,只要簡單地將字型檔,複製到 /usr/share/fonts/ 之下,然後再下指令 fc-cache 即可,它會包辦一切後續動作,並且字型立即生效,不需要像過去一般,結束階段作業,才能使用新字型。

看起來一切都很完美不是嗎?然而,很不幸地,fontconfig 以及 Xft 並未對亞洲地區的字型做完整的支援,如果(我是說如果)您仔細看過 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/ ... 3.i386.rpm
http://firefly.idv.tw/setfont-xft/RPMS/ ... 8.i386.rpm
http://firefly.idv.tw/setfont-xft/RPMS/ ... 5.i386.rpm



如果您用 KDE 3.0 以上,又想看到中文的字型名稱,請繼續下載以下兩個套件:
http://firefly.idv.tw/setfont-xft/RPMS/ ... 5.i386.rpm
http://firefly.idv.tw/setfont-xft/RPMS/ ... 3.i386.rpm

※※ 請注意!安裝過程如果出現相依性套件,多半是缺少了 xxxx-devel ,請下載缺少的套件即可,不必到處找。

※※ 目前只有 RedHat 8.0 的套件,如果您並非使用 RedHat 8.0,請勿安裝,但您可以下載 Source RPMS,針對您的版本,略做更改重新編譯即可。

看螢幕快照在這裡:
http://firefly.idv.tw/setfont-xft/

好了,希望大家試用看看,如果有其他意見或更好的建議,請不吝賜教
_________________
落盡鉛華束長髮,一筆狂草稱女俠。
踏遍三江五湖路,更攜書劍闖天涯。
          ─ 螢火飛
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章palmpilote » 週三 2月 19, 2003 9:27 am

moto大有沒有興趣把它改成deb包啊
不然也不知道要改什麼
這樣好像沒什麼意義
p.s可是這樣以後要upgrade時又很麻煩
唉....
圖檔
看啥?沒看過貓有五條腿的嗎?
http://palmpilote.twbbs.org
個人blog啟動
頭像
palmpilote
快樂的大學生
快樂的大學生
 
文章: 524
註冊時間: 週四 10月 17, 2002 4:01 pm
來自: 笨呆星球

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章damon » 週三 2月 19, 2003 10:28 am

這些patch用在FreeBSD上,會有問題
damon
活潑的高中生
活潑的高中生
 
文章: 358
註冊時間: 週二 9月 10, 2002 5:42 pm

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章moto » 週三 2月 19, 2003 10:37 am

我想讓這些 patch 進入原來的 source tree 才是正道,而且以現況來說,中文處理方面已經算是可用了,大家不妨在多點耐心等候囉..:-D
頭像
moto
摩托學園站長
摩托學園站長
 
文章: 2808
註冊時間: 週二 9月 03, 2002 3:37 am
來自: 台北

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章octapult » 週四 2月 20, 2003 3:16 pm

日本 KDE 已經弄出 Xft2/fontconfig 粗體的功能了 (斜體是目前就已經有的功能),還有解決 CJK 字型裡面的英文字距過大的問題,
所以我想這個功能應該很快就會加到官方下一版裡面了吧。

目前 Xft2 在顯示字型方面真的作得很不錯,我想 defoma 以後的功能大概就只剩下設定列印字型而已了 :-P
------BEGIN GEEK CODE BLOCK------
Version: 3.12
G! d- s+:+ a? C++(+++) UBL>++++ P L++ E+ W++ N+ o+ K- w(--)
O? M? V PS+ PE+ Y+ PGP- t 5? X++ R tv b+ DI- D+ G e? h! r-- z?
-------END GEEK CODE BLOCK-------
octapult
摩托學園!學園長們
摩托學園!學園長們
 
文章: 512
註冊時間: 週六 9月 07, 2002 10:30 pm
來自: Seyda Neen, Morrowind

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章阿信 » 週一 4月 21, 2003 2:27 pm

請問請問...Xft2是否要搭配freetype module或是xtt也可以呢?

現在覺得xtt似乎頗舊了... :ooops:
頭像
阿信
版面大總管
版面大總管
 
文章: 4756
註冊時間: 週二 9月 03, 2002 11:58 pm
來自: 台灣 - 嘉義

re:[轉貼]中文字型完全解決方案 PART II(搶鮮速報)

文章octapult » 週一 4月 21, 2003 3:53 pm

我的猜測是,使用到 libxft2 的時候會使用 freetype2,而其餘的情況 (例如舊的軟體) 則依舊使用 xtt,而混用的結果使得有的字體會看不到。(純粹猜測,錯了請不要打我 :-P )

另外值得一提的是 Xft2 和 fontconfig 的作者 Keith Packard 已經被踢出 XFree86 團隊了,他目前建立一個網站 xwin.org,目的是號召社群來監督、加速 X 的進展。
------BEGIN GEEK CODE BLOCK------
Version: 3.12
G! d- s+:+ a? C++(+++) UBL>++++ P L++ E+ W++ N+ o+ K- w(--)
O? M? V PS+ PE+ Y+ PGP- t 5? X++ R tv b+ DI- D+ G e? h! r-- z?
-------END GEEK CODE BLOCK-------
octapult
摩托學園!學園長們
摩托學園!學園長們
 
文章: 512
註冊時間: 週六 9月 07, 2002 10:30 pm
來自: Seyda Neen, Morrowind


回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客