[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



Reply to: