質問: 0 ) { 85 XmbDrawString( dpy, win, fs, gc, 86 50, 50, string, strlen( string ) ); 87 } 88 break; 89 90 case KeyPress: 91 XFreeGC( dpy, gc ); 92 XFreeFontSet( dpy, fs ); 93 XDestroyWindow( dpy, win ); 94 XCloseDisplay( dpy ); 95 return 0; 96 } 97 } 98 } 99 ``` しかし、日本語が文字化けしてしまいます。 文字列の描画自体は実行されているので、ロケールやフォントの読み込みは問題なく実行されており、プログラムと実行環境の文字コードが原因だと認識しています。 実行環境に問題があるのかと`locale`コマンドで確認しましたが、 ``` LANG="ja_JP.UTF-8" LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_ALL="ja_JP.UTF-8" ``` のように、UTF-8となっています。 また、ファイルの文字コードもUTF-8となっています。 **質問** 文字化けの原因として、どのようなものが考えられるでしょうか? また、これ以外に日本語を表示する方法はあるでしょうか? ご協力をお願いします。 **追記** 以下が文字化けのスクリーンショットです。![enter image description here](https://i.stack.imgur.com/X8AKr.jpg)
回答: 環境に`fixed`のフォントがインストールされていないため、と予想します。 ``` xlsfonts -fn '-*-fixed-medium-r-normal--16-*-*-*' ``` と実行し、何も出力されなければ予想通りと思います。 Xlibで日本語表示させるのであれば、RHEL/CentOSであれば、`xorg-x11-fonts-misc`の パッケージをインストールすると表示されるようになるかと思います。 (他のディストリビューションも似たような感じ) * なお、Xlibだとttf等のアンチエイリアシングフォントは表示できなかったと思います。 表示したい場合「fontconfig」関連のAPIで実装することになると思います。