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

Re: Debian for ARM710的中文化問題



ha shao wrote:

> On Sat, Jan 27, 2001 at 03:50:55PM +0800, shuyong@public.nn.gx.cn wrote:
> > > 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 的。
> >
> > 我這只是示意,本想少打幾個字,看來還是不能偷懶。應該是:
> > char * ch_str  = "這是中文";
> > ...
> > XDrawString16(display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + 1);
> > 顯示正確:這是中文|<-結束,4個漢字。
> > XChar2b *ch_str = struct copy "這是中文";
> > ...
> > XDrawString16(display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + 1);
> > 顯示錯誤:這  是  |<-結束,同樣佔用4個漢字的位置,只是一個漢字後面
> > 是空白。這是演示XmbDrawString/XwcDrawString的錯誤。XDrawString16的
> > 錯誤是下邊描述的。
> >
>
> 我也說的是XmbDrawString 的情況。第一種情況下XDrawString16 看到的
> 應該是兩個XChar2b*:
> XChar2b* ch_str[0] = {這} ch_str[1]= {中}
>
> 顯示結果應該是‘ 這中’,
> 第二種情況下正確: ch_str[0] = 這 ch_str[1] = 是 ch_str[2] = 中
> ch_str[3] = 文,
> 實際上 XDrawString16 並沒有把 ch_str
> 當成 XChar2b* ,而是當成 char* ,我的意思是說 XDrawString16 本身
> 有問題。它如果要求參數是 XChar2b* ,就應該把它當做 XChar2b* 來
> 用,而不是當做 char* 來用。我想你也看出來了,你希望用 8 bit align
> 來解決,我是認為應該把 XDrawString16 和 XmbDrawString 的按照函數
> 定義來改正。
>
> 基本上XDrawString16, XmbDrawString...的是在sizeof(XChar2b) == 2
> 的假設情況下,可以正常工作的。當 sizeof(XChar2b) != 2 時,兩個
> 函數都有問題。而且配合工作的結果也有問題。
>
> 看 XDrawString16 的定義 (Text16.c),正像 Rigel 說的,定義了
> MUSTCOPY2B 後,XDrawString16 應該會按照我們預期的方式工作。
> 這時候只要在 XmbDrawString 裡給它喂正確的 XChar2b* 和長度,
> 就應該可以解決問題了。xlibc 大概只在 omText.c 裡有3 處用到 XDrawString16.
>
> > >
> > > 只是 xlib 寫的時候沒有考慮移植性,在傳給 XDrawString16 的時候給出
> > > 正確的XChar2b 的內容就行了。效率不會減低多少。
> > >
> >
> > 我編譯一次X需要30多個小時,並且我這台ARM710只有16MB內存,在
> > 生成libX11.so和XServer時內存不足。只有上班後讓人加焊上16MB再試了。
>
> :( 希望改兩個文件,編譯不會再用30個小時。 16MB 編X是夠頭痛的,swap
> 再大點也沒有用?hehehe, good luck. 我已經幾年沒編譯X了。
>
> --
> Best regard
> hashao

這台機子不是台式機,我想國內也不會有ARM的台式機。因此這家伙沒有
硬盤,沒有軟驅。我是通過NFS system運行linux + X。如果誰知道如何通過
NFS掛上一個swap,我將不勝感激。不管怎樣,都是漫長的等待:-)。

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



Reply to: