このページは過去に掲載していたものをそのまま使用しています。
みついわゆきおさんのパッチのおかげで、fontsetで読み込めるように なったので、Times-Roman等のフォントを使っても日本語が表示されるように 修正してみました。
フォントの設定をしているのは、lib/font.cなので、ここを修正した。 いままではフォントの指定は次のようになっていた。
/* 定義 */ typedef struct _FontData { char *fontname; char *fontname_ps; char *fontname_x11[NUM_X11_FONTS]; /* First choice */ } FontData; /* フォント定義の一部 */ { "Times-Roman", "Times-Roman", { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*", NULL } },
これでは不便なので次のように変更する
/* 修正後のフォント定義 */ { "Times-Roman", "Times-Roman", { "-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*", NULL } },
これによって不具合がそこら中に出現することになる。なぜなら fontを指定している文字列には'%d'が含まれているが、これはg_snprintf()に よりサイズを指定して完全な形になるのだが、その際のコードは次のように なっている。
g_snprintf(buffer, bufsize, x11_font, 100); /*これを展開すると*/ g_snprintf(buffer, bufsize,"-adobe-times-medium-r-normal-*-%d-*-*-*-*-*-*-*,-*-mincho-medium-r-normal-*-%d-*-*-*-*-*-*-*", 100);
そこで、g_snprintf(buffer, bufsize, x11_font, 100, 100);
と
書き直す。これによって日本語にも対応したフォントを読み込む事ができるように
なり、描画の際に日本語も表示されるようになる。