[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Debian for ARM710的中文化問題



On Sat, Jan 27, 2001 at 03:11:31PM +0800, shuyong@public.nn.gx.cn wrote:
> 
> 3、XDrawString16基本正常,可以畫漢字(問題在後面)。
> 所以如果是:
> char *ch_str = "zh1 zh2 zh3 zh4";
> ...
> XDrawString16 (display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + 1);
> 看到的是
> zh1 zh2 zh3 zh4 00

我開始反應不過來了,這裡傳入的是(XChar2b*) zh1 zh2, 0 。但是畫
出來的是正確的 zh1 zh2 zh3 zh4 0 ,那 XDrawString16 就也不對了
呀。應該是在傳入 (Xchar2b*) zh1 zh2, zh3 zh4, 0 時才應該畫
zh1 zh2 zh3 zh4 0 的。

> 如果是:
> XChar2b *ch_str = struct copy "zh1 zh2 zh3 zh4";
> ...
> XDrawString16 (display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + 1);
> 看到的是
> zh1 00 zh2 00
> XmbDrawString/XwcDrawString在漢字部分就是這樣顯示。如果想保持代碼的效率,只有在
> gcc for ARM一端解決。因為有些ARM CPU要求尋址按字(word)對齊,所以只要把gcc for ARM
> 的缺省編碼按字對齊而不是按雙字(dword)就行了。

只是 xlib 寫的時候沒有考慮移植性,在傳給 XDrawString16 的時候給出
正確的XChar2b 的內容就行了。效率不會減低多少。

> 
> XDrawString16的問題:
> 1、第一次畫漢字時會在第一個漢字前多畫一個漢字(規律還沒有找到)。程序自己刷新窗口
> 就正常了。
> 2、最後一個漢字畫不出來,除非length = length + 1。刷新窗口也沒有用。
> 問題的原因還在查找,我猜想可能和sizeof(XChar2b) == 4相關。
> 

這個 Roger 指出的補丁應該解覺了吧?
你試過 Rigel 說的那個選項沒有?這個我不太清楚

-- 
Best regard
hashao

-- 
| This message was re-posted from debian-chinese-gb@lists.debian.org
| and converted from gb2312 to big5 by an automatic gateway.



Reply to: