2008年8月8日 星期五

KDE4 and qt4 font patches(中文版)

(English version here)
來看看為什麼 libqt4 需要修補:
這是 kde4.04:我用了 openSUSE 11.0 KDE4 Live CD 來安裝的,
看起來很棒吧!

更新完成後,我安裝了 gcin 和 ttf-arphic-uming,這樣我就可以輸入中文,而且中文的顯示(不管繁體或簡體)都不會有問題。



看到上面這張圖,您就會發現奇怪的地方了。和下面用 firefox 瀏覽同一網頁比較,就會發現所有的中文字都無法顯示粗體。


這裡還有另一個問題, uming 有內嵌點陣字,當字型較小時會用點陣字來顯示,如此大大增加了字體的清晰可讀性。但在 KDE4 中中文一律是反鋸齒(平滑)字型,當這些字在低螢幕解析度的情況下會看起來不夠黑。


現在安裝 kde4-l10n 套件並將語系變為 zh_TW ,這才是我們真正使用的中文 KDE 桌面環境。

您會發現所有的字型都變了。當您使用 zh_TW 的語言環境時,所有的字(包含英文字)都會對應到中文字型。<--這有點離題或許我們下次再討論這點...




甚至在 Konsole 中也會使用中文字型當成預設值,但是大部分的中文字型都不是等寬字,所以會造成顯示不正確。像是上圖中 "Deskto"p"", "p" 就被切掉了一半看起來像個 "l"。
所以安裝 KDE 後第1件要做的是就是調整字型設定,像下圖這樣:

然後




現在,讓我們正式進入主題。
我們需要 qt4 能夠使用內嵌的點陣字以及顯示中文字型的偽粗體。
Belly 提供了關於 qt4 字型顯示的一些修補,請詳見以下的討論串:
http://moto.debian.org.tw/viewtopic.php?t=13003
您可以經由上面的連結取得這些修補程式。
basic.diff : 改善 hint-style 的對應
embeddedbitmap.diff : 使 qt4 支援 embeddedbitmap
add-missing-style.diff : 使沒有真實粗體的字型有粗體的樣式
synthetic-bold.diff : 使用 freetype 來加粗字體的筆劃
ftlcdfil.diff : Lcd Subpixel Filtering (from David Turner)
ignore-global-advance.diff (from Siyuan.nz)
我在
openSUSE Build Service 針對 libqt4-4.4.1 測試了這些修補程式
http://download.opensuse.org/repositories/home:/swyear/openSUSE_11.0/
如果您有台 openSUSE 的機器且想要幫忙測試,
加入上面的套件庫然後升級 libqt4 相關的套件。
看起來蠻不錯的,KDE 又是一個美麗的桌面了。(需要把妹的成果報告)






和前面未經修補的螢幕抓圖比較起來,
您就會知道這些修補的重要。
中文字型可以使用內嵌點陣字也可以顯示粗體的效果,
不只是一個好看的問題,對於中文使用者來說這些是非常重要的。

這些修補程式可能需要更多的測試與改善,
我們也需要有人(就是你啦!)幫忙將這些修補推進到 KDE4 中。
如果您想要幫忙(測試、討論或提交到上游或任何的幫助)
請到摩托學園的討論區和我們連繫
http://moto.debian.org.tw/viewtopic.php?t=13003

有個已知的問題:(for openSUSE 11.0)
如果您在 freetype2 中開啟了次像素顯示的支援,
例如您使用了 M17N 套件庫中的 freetype2,會造成
桌面及下方工具列上的中文字都消失不見:


所以請您確定您使用的是 openSUSE 11.0 自帶的 freetype2。
您可以停用 M17N 套件庫,然後執行
# zypper in -f freetype2

最好再執行一次
# ldconfig

我無法確定是哪個部份造成的
Plasma? libqt4-4.4.1? 還是這些修補程式?
我將試著將這些修補加到 libqt4-4.4.0 <--這是 openSUSE 11.0 所搭載的版本。 並測試是否能在 KDE 4.1 上運作。可能要等下星期...

讓我們一同享用 KDE4 吧!


我會將這些修補程式提交到 openSUSE bugzilla
https://bugzilla.novell.com/show_bug.cgi?id=374066

6 則留言:

AlexC 提到...

請問如果是使用11.0 的kde3.5,是否也需要patch

AlexC

swyear 提到...

libqt4 相關的程式就會需要
例如 skype

提到...

不曉得有沒有測試過 ,.:; 這些符號。

我測試的結果這些符號會跟後面的字連載一起甚至重疊,不曉得你的會不會?

測試環境:openSUSE 11 已加上相關的 Patch

swyear 提到...

想:
我不知道您說的情況發生在什麼程式中
可以說清楚些嗎?

提到...

只要是 Qt4 的程式基本上都會發生

http://home.lst.idv.tw/pub/yast2.png

可以看看圖片上我畫紅線的地方,或許是因為我所用的字體的關係
使用的字體:文鼎 PL 新宋 (odosung.ttc)

swyear 提到...

是的,我的也是如此
似乎和這個 patch 無關
(也不知道如何修改)