共通デスクトップ環境 プログラマーズ・ガイド (国際化対応編)

フォント・オブジェクト

この節では次のフォント・オブジェクトを説明します。

フォント・セット

一般的に、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 */

フォント

国際化対応プログラムは、特定の charset と特定の文字セットのために使用する場合以外は、フォント (つまり XFontStruct) を直接使用することは避けてください。ロケールが必要とする特定の charset を接続しているサーバがサポートしていない場合、XFontStruct の使用は制限されます。XFontStruct のリソース名は *font です。

フォント・リスト

ローカライズされたテキストを描画するためにウィジェットや XmString を使用しているすべてのプログラムは、フォントを指定するために XmFontList 名を指定する必要があります。フォント・リストは 1 つ以上のフォント・セットまたはフォントのリストか、あるいはフォント・セットとフォント両方のリストです。フォント・リストは、ウィジェットがテキストを描画するために使用すべきフォントとフォント・セットのリストを指定するために使用されます。より複雑なアプリケーションの場合、フォント・リストは複数のフォント・セットを指定し、各フォント・セットには名前がタグ付けされます (たとえば Bold、Large、Small など) 。このタグは XmString セグメントのタグと関連付けられます。タグは、フォント・リスト内の特定のフォントやフォント・セットを識別するのに使用されます。