[Armadillo:08459] Re: x-window

watanabe email@hidden
2012年 12月 8日 (土) 16:18:01 JST


渡辺です。

調査を続けました。

現在のロケールが何になっているかを
setlocale()
で調べてみたら、"C"と返されました。
setlocale( LC_ALL, "JPN" )
とやってみましたが、エラーになってしまいます。

Armadillo440のx11は日本語フォントが入っていない
のでしょうか?
確かに、サンプルでも日本語って見たことがないような。。。



(2012/12/06 16:11), watanabe wrote:
> 渡辺です。
> 
> 回答ありがとうございます。
> 
>> fsが 0x0 だからでは?
> のアドバイスに従い、その設定を行っている所を調べたら、
> fs  = XCreateFontSet(d, MTFONT, &miss, &n_mis, &def);
> の箇所がありました。そのfsを調べてみたら、そこで0に
> なっていました。
> 
> XCreateFontSetでエラーになっていると判断して、何故
> エラーになっているのかを、manの内容とソースから
> 考えると、MTFONTがサポートされていないからではないかと
> 想像しました。ちなみにMTFONTは
> #define MTFONT "\
>    -sony-fixed-medium-r-normal--16-*-iso8859-1,\
>    -jis-fixed-medium-r-normal--16-*-jisx0208.1983-0,\
>    -sony-fixed-medium-r-normal--16-*-jisx0201.1976-0"
> と定義されています。
> 
> 現在、どのフォントがサポートされているかをVMware上で
> xlsfontsコマンドで調べてみると、非常に大量のフォントが
> 表示されます。その内の一つの
> -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-2
> を上述したMTFONTの代わりに設定してみました。
> 結果は同じくfsに0が入ってしまいました。
> 
> 調査方法及び対応方法が間違っていますでしょうか?
> 
> (2012/12/06 1:05), email@hidden wrote:
>> At Wed, 05 Dec 2012 18:48:58 +0900,
>> watanabe wrote:
>>>
>>> 先程ご教示頂いた修正を行って大分進むようになったのですが、
>>> "Segmentation fault"というエラーになり終了してしまいます。
>>>
>>> 追いかけてみると、
>>> XmbDrawString(d, w, fs, gc, mbx, mby, eucbuff, strlen(eucbuff));
>>> でエラーになっていました。
>>> パラメータを調べてみると、
>>> d=0x37008,w=0x400001,fs=0x0,gc=0x40cd8,mbx=0x40,mby=0x26,
>>> eucbuff=0x25ec8,len=0x10
>>> となっていました。
>>
>> fsが 0x0 だからでは?
>>
>>> XmbDrawStringはx11そのものなので、どうやって調べたらよいか
>>> 困惑しています。
>>> エラーの原因と対応策についてご教示ください。
>>
>> 原因は
>>
>>    1) man page を読む
>>       => なにも書いていない
>>    2) source を読む
>>       2.1) source をもってくる
>>       2.2) 該当関数を読む
>> 	void
>> 	XmbDrawString(
>> 	    Display            *dpy,
>> 	    Drawable            d,
>> 	    XFontSet            font_set,
>> 	    GC                  gc,
>> 	    int                 x,
>> 	    int                 y,
>> 	    _Xconst char       *text,
>> 	    int                 text_len)
>> 	{
>> 	    (void)(*font_set->methods->mb_draw_string) (dpy, d, font_set, gc, x, y,
>> 	                                                (char *)text, text_len);
>> 	}
>>
>>        font_set を de-reference しているっぽいので、NULLだとセグる。
>>
>>
>> 対応策は
>>
>>    a) XCreateFontSet の戻り値を確認するコードにする
>>    b) フォントを入れる
>>
>> じゃないでしょうか?
>>
> 




armadillo メーリングリストの案内