一般的に、Xlib を使用してローカライズされたテキストを描画するすべての国際化対応プログラムは、ロケール依存フォントを指定するために XFontSet() を使用しなければなりません。1 つのフォント・セット内の特定のフォントは、charset フィールドには指定せずに、XLFD 命名規則を使って指定されます。XFontSet のリソース名は *fontSet です。フォント・リソースのリストは、ローカライズされたリソースを参照してください。
(XmString 関数やウィジェットを使用するのに対して) Xlib を直接使用してテキストを描画するアプリケーションは、Xt が提供する文字列からフォント・セットへのコンバータを利用できます。たとえば、次のコード・フラグメントは Xt を使用する場合と使用しない場合のフォント・セットの獲得方法を示します。
/* pardon the double negative... means "If using Xt..." */
#ifndef NO_XT
typedef struct {
XFontSet fontset;
char *foo;
} ApplicationData, *ApplicationDataPtr;
static XtResource my_resources[] = {
{ XtNfontSet, XtCFontSet, XtRFontSet, sizeof (XFontSet),
XtOffset (ApplicationDataPtr, fontset), XtRString,
"*-18-*"}}
#endif /* NO_XT */
...
#ifdef NO_XT
fontset = XCreateFontSet (dpy, "*-18-*", &missing_charsets,
&num_missing_charsets. &default_string);
if (num_missing_charsets > 0) {
(void) fprintf(stderr, "&s: missing charsets.\n",
program_name);
XFreeStringList(missing_charsets);
}
#else
XtGetApplicationResources(toplevel, &data, my_resources,
XtNumber(my_resources), NULL, 0);
fontset = data.fontset;
#endif /* NO_XT */