2008年8月31日 星期日

SUSE 中的 qt4-immodule

gcin 從 1.4.3.pre5 開始支援了 qt4-immodule
因為一些預設的路徑和 mandriva 不一樣
所以在 SUSE/openSUSE 上自行編譯新版 gcin 時需要做一些小修改

要編譯 gcin 的 qt4-immodule 需要先安裝 libqt4-devel 及其相依的套件
在 ./configure 時,程式會檢查系統中是否存在
/usr/lib/qt3/plugins/lib/inputmethods (for qt3-immodule)
/usr/lib/qt4/plugins/lib/inputmethods (for qt4-immodule)
但是在 SUSE 中的路徑是
/usr/$LIB/qt3/plugins/inputmethods (for qt3-immodule)
/usr/$LIB/qt4/plugins/inputmethods (for qt4-immodule)
其中的 $LIB 是 lib 或 lib64
所以這部份要修改

而 qt4-im/Makefile 中相對應的一些變數就要跟著變更
...
QTIM=$(QT)/plugins/inputmethods
...
QTINC=/usr/$(LIB)/$(QT)/include
...
LDFLAGS=-L/usr/$(LIB)/$(QT) -L/usr/X11R6/$(LIB) -L../im-client -lQtGui -lQtCore -lmng -ljpeg -lpng -lz \
-lXrender -lXrandr -lXft -lfontconfig -lgcin-im-client \
-lXext -lX11 -lm -lSM -lICE -ldl -lpthread

...
/usr/$(LIB)/$(QT)/bin/moc $< -o moc_gcin-qt.cpp
...

若不需要自己編譯
可以用 swyear 套件庫安裝(升級) gcin 即可
參考:http://cle.linux.org.tw/trac/wiki/GcinInstallSuse
㊣openSUSE 10.2 或更新版本才支援 qt4-immodule
SLE 10 在此套件庫中不支援,您得自己編譯了

使用 gtk/qt4(3)-immodule 有什麼好處,
您可以自行參考 gcin 使用手冊(新版比以前清晰好看許多)
(安裝 gcin 後就在您的 /usr/share/doc/packages/gcin/README.html)
或使用 gcin-setup -> 求助(H) 就可以看到
在此直接引用:
  1. gcin 掛掉重新執行時比較不會有程式跟著一起掛掉的情形,現在可以直接在 gnome-terminal 下, pkill gcin ,不用擔心 gnome-terminal 會停在那邊不動 (mozilla-gtk2 除外,這是因為如果你有安裝 flash player,flash 會 open XIM 的 sesseion,X11 裏面的 XIM close 時在 server當掉時也會跟著當掉。)。

  2. GTK2/QT 的程式 locale 即使設定成 zh_TW.Big5 也還是可以輸入所有的 UTF-8 字。

  3. 詞音由於現在有了 key release event,現在也可以用 Shift 來切換中/英。

  4. gcin 的協定對 input focus 的處理比 XIM 好。

  5. client 直接 對 gcin server 互傳資料,不透過 X server,延遲會比較少。

  6. 如果發現 gcin server 沒有在執行,會自動執行 gcin。


gcin 官方網站:http://hyperrate.com/dir.php?eid=67

2008年8月26日 星期二

[轉貼]SuSE Linux 論壇找尋落腳地

SuSE Linux 論壇站長的公告:
http://www.suse.idv.tw/viewtopic.php?t=1162&sid=1a70d9bd925bfd3e7935de71a389caa2

robert 從學生時期(根據會員列表是 2002 年)就開始經營這個網站
您可以注意到網站名稱仍是 SuSE 的傳統寫法(u 小寫)
自己買網域名稱,設備則由中正大學圖書館提供
有時機器當了還得千里迢迢坐車回去修理
這個小站是台灣唯一專門針對 SUSE/openSUSE 的中文討論區
雖然人氣不是很旺,但是很有家的感覺...
有人能幫得上忙嗎?

2008年8月8日 星期五

KDE4 and libqt4 font patches (English version)

(繁體中文版在此)
First, Forgive my poor English.
I'll try to show you
Why libqt4 need patches ?
This is kde4.04: I used an openSUSE 11.0 KDE4 Live CD to install this KDE4 system.
Looks nice, is't it?

After fully updated, I install gcin and ttf-arphic-uming, so I can input Chinese words, and uming is an Chinese font that can be used for Chinese both traditional and simplified.



Here you can see something strange. Compared to the same page browsed with firefox3, we notice that all Chinese characters have no bold face.


Here's another problem, uming has embeddedbitmap font in it, which is more readable for small fonts.But you can see that Chinese-named folder use antialias-style, that's not so good for a low resolution screen, fonts is not black enough.


Now, I will change locale to zh_TW and install kde4-l10n package, That's the real desktop we will use.

You can see all fonts are not the same. When use zh_TW locale, all fonts will match to Chinese font include English character.-->But this is another topic...





Even Konsole use Chinese font, but most Chinese fonts are not monospace.
So some words cannot show correctly. Like "Deskto"p"", "p" is cut into half like an "l".
So after installing KDE, The first thing you have to do is to change font setting like this:

Then




OK, Now let's get into topic.
We still need qt4 to show embeddedbitmap font and fake bold face.
Belly had make some patches for qt4 font rendering, see the thread below:
http://moto.debian.org.tw/viewtopic.php?t=13003 (In Chinese)
You can follow the links above to get these patches.
basic.diff : improve hint-style matching
embeddedbitmap.diff : embeddedbitmap support
add-missing-style.diff : add bold-style to fonts that do not have a real bold-style
synthetic-bold.diff : use freetype to bolder font stroke
ftlcdfil.diff : Lcd Subpixel Filtering (from David Turner)
ignore-global-advance.diff (from Siyuan.nz)
I have test these patches to patch libqt4-4.4.1 in openSUSE Build Service.
http://download.opensuse.org/repositories/home:/swyear/openSUSE_11.0/
If you use openSUSE and want to test these patches,
add my repository and update libqt4-related packages.
Seem work fine, KDE looks beautiful again.






Compare to the screenshots before patching,
You will know what I said.
Chinese fonts can use embeddedbitmap fonts and can have bold-style,
this is not only an eye-candy effect, but a really need for Chinese users.

These patches may need more test and refine,
and we need someone's (that's you!) help to merge into upstream.
If you want to help ( testing, discussing or submiting to upstream or anything)
goto moto's forum to contact with us.
http://moto.debian.org.tw/viewtopic.php?t=13003

A known issue:(for openSUSE 11.0)
If you enable subpixel-hinting in freetype2,
for example, You upgrade your freetype2 from M17N repository,
Chinese characters will disappear on desktop and system tray like below:


Make sure you use freetype2 shiped with openSUSE 11.0.
Disable M17N repo, and run
# zypper in -f freetype2

You'd better run
# ldconfig

again.
I'm Not sure what's the problem.
Plasma? libqt4-4.4.1? or caused by some of these patches?
I'll try to re-diff these patches for libqt4-4.4.0 <--the version openSUSE 11.0 shiped with. And see if these patches work for KDE 4.1. maybe next week...


Let's enjoy KDE4 together!


I'll submit these to openSUSE bugzilla
https://bugzilla.novell.com/show_bug.cgi?id=374066

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