デスクトップには、テキスト表示用にフォント・リストが必要です。フォント・リストは、フォント構造体か、フォント・セットか、その両方のリストであり、それぞれに識別のためのタグがあります。フォント・セットは、現在の言語のすべての文字が確実に表示できるようにします。フォント構造体により、すべての文字が確実に表示できるようにするのは、(ロケールのコード・セットからグリフ索引への変換を含めて) プログラマの責任です。
フォント・リストの各エントリの形式は、{tag, element } の組み合わせです。element は単一のフォントかフォント・セットのいずれかです。アプリケーションは、単一のフォントとフォント・セットのどちらからでもフォント・リスト・エントリを作成できます。たとえば、次のコード・セグメントはフォント・セットのフォント・リスト・エントリを作成します。
char font1[] = "-adobe-courier-medium-r-normal--10-100-75-75-M-60"; font_list_entry = XmFontListEntryLoad (displayID, font1, XmFONT_IS_FONTSET, "font_tag");
XmFontListEntryLoad() 関数は、フォントを読み込むか、またはフォント・セットを作成して読み込みます。この関数の 4 つの引き数は次のとおりです。
フォント・リストが使用されるディスプレイ
フォント名かベース・フォント名リストのいずれか (nametype 引き数による) を表す文字列
fontname 引き数がフォント名とベース・フォント名リストのどちらを表すかを指定する値
そのフォント・リスト・エントリのタグを表す文字列
nametype 引き数が XmFONT_IS_FONTSET の場合、XmFontListEntryLoad() 関数は fontname 引き数の値からフォント・セットを現在のロケールに作成します。フォント・セットに指定されたフォントの文字セットは、ロケールに依存します。nametype が XmFONT_IS_FONT の場合、XmFontListEntryLoad() 関数は fontname にあるフォントをオープンします。どちらの場合も、フォントまたはフォント・セットがフォント・リスト・エントリに置かれます。
次のコード例は、新しいフォント・リストを作成し、そこにエントリfont_list_entry を追加します。
XmFontList font_list; XmFontListEntry font_list_entry; . . font_list = XmFontListAppendEntry (NULL, font_list_entry); XmFontListEntryFree (font_list_entry);
フォント・リストが作成されると、XmFontListAppendEntry() 関数がそこに新しいエントリを追加します。次の例は、XmFontListEntryCreate() 関数を使用して既存のフォント・リストに新しいフォント・リスト・エントリを作成します。
XFontSet font2; char *font_tag; XmFontListEntry font_list_entry2; . . font_list_entry2 = XmFontListEntryCreate (font_tag, XmFONT_IS_FONTSET, (XtPointer)font2);
font2 パラメータは XCreateFontSet() 関数に返された XFontSet を指定します。XmFontListEntryCreate() 関数の引き数は font_tag、XmFONT_IS_FONTSET、font2 であり、それぞれタグ、型、フォントです。タグおよびフォント・セットは、フォント・リスト・エントリの {tag, element} の組み合わせです。
このエントリをフォント・リストに追加するには、XmFontListAppendEntry() 関数を再度使用します。このときのみ最初のパラメータが既存のフォント・リストを指定します。
font_list = XmFontListAppendEntry(font_list, font_list_entry2); XmFontListEntryFree(font_list_entry2);