From: Daisuke Kanda Date: 1998-10-12T04:48:41+09:00 Subject: [ruby-list:9982] Re: お礼と、 Ruby/Gtk(i18n) について質問 かんだです。 #とりあえず Win95 で電八。メールアドレスをどう整理すべきか。。。 Akihiro Furudo Fri, 9 Oct 1998 08:42:44 +0900 の [ruby-list:9897] お礼と、 Ruby/Gtk(i18n) について質問 Akihiro> 札幌の古堂です。立石さんありがとうございます。 Akihiro> Ruby/Gtkをインストールしました。 Akihiro> Akihiro> まず、locale を実行したら ja_JP.ujis とでてきたので、 Akihiro> gtk-1.0.4を ./configure --with-locale=ja_JP.ujis でインストールしました。 Akihiro> Akihiro> 次に、ruby-gtk-0.13.tar.gz を ruby-1.1c5/ext/ に突っ込んで、rubyをmake Akihiro> して、できあがったrubyで次のスクリプトを走らせてみたところ、ボタンの字 Akihiro> が表示されませんでした。どうしたらいいのでしょうか? Akihiro> Akihiro> Xサーバの設定のほうに何か問題があるのでしょうか。Slackware-3.4で、 Akihiro> XFree86 3.3.1を使っています。実行時にはフォントまわりの処理はしている Akihiro> ようですし、ボタンの大きさもそれらしくなっています。 えーっとですね、ruby/gtkで日本語使うには以下の設定が必要です。 ・locale がちゃんと使えること。 ・X で FontSet が使えること。 ・gtk で日本語が使えること。 ・gtk と rubyスクリプトの文字コードを揃えること。 とりあえず、問題の切り分けが必要かと思います。 うちの slack 環境でハマってたのは FontSet なので、その確認プログラムをつけます。試して みてください。FontSet で複数の font が出ればおーっけーです。下のログだと、X_LOCALEを使っ て環境変数 LANG が ja のときにうまくいってます。 --------------------------------------------------------------------------------------- $ ls fontset.c $ ldconfig -p|grep 'libX11.so ' libX11.so (ELF) => /usr/X11R6/lib/libX11.so $ gcc fontset.c -L/usr/X11R6/lib -lX11 $ echo $LANG ja $ ./a.out setlocale locale not supported by C library locale: C createFontSet about FontSet Locale: C BaseFontName: * fonts: -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1 $ gcc -DX_LOCALE fontset.c -L/usr/X11R6/lib -lX11 $ ./a.out setlocale locale: ja createFontSet about FontSet Locale: ja BaseFontName: * fonts: -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1 -jis-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1983-0 -misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0 $ LANG=C ./a.out setlocale locale: C createFontSet about FontSet Locale: C BaseFontName: * fonts: -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-1 --------------------------------------------------------------------------------------- #include #ifdef X_LOCALE #include #else #include #endif #define FONTSET_NAME "*" void setlocale0() { printf("\nsetlocale\n"); if (!setlocale (LC_ALL,"")) printf("locale not supported by C library\n"); if (!XSupportsLocale ()) { printf("locale not supported by Xlib, locale set to C\n"); setlocale (LC_ALL, "C"); } if (!XSetLocaleModifiers ("")) { printf("can not set locale modifiers\n"); } printf("locale: %s\n", setlocale (LC_ALL,NULL)); } XFontSet createFontSet0(char *name) { Display *display; XFontSet fontset; int missing_charset_count; char **missing_charset_list; char *def_string; int i; printf("\ncreateFontSet\n"); display = XOpenDisplay(NULL); fontset = XCreateFontSet(display, name, &missing_charset_list, &missing_charset_count, &def_string); if (0 < missing_charset_count) { printf("missing_carset:\n"); for (i=0; i