Table 2-1 shows the syntax for a font set and font list.
Table 2-1 Font Set and Font List Syntax
Resource Type |
XLFD Separator |
Terminator |
FontEntry Separator |
---|---|---|---|
*fontSet: (Xlib) |
comma |
None |
None |
*fontList: (Motif) |
semicolon |
colon |
comma |
Here are some examples of font resource specifications:
app_foo*fontList: -adobe-courier-medium-r-normal--24-240-75-75-m-\ 150-*:
The preceding fontList specifies a fontset, consisting of one or more 24-point Adobe Courier fonts, as appropriate for the user's locale.
app_foo*fontList: -adobe-courier-medium-r-normal--18-*; *-gothic-\ *-18-*:
This fontList specifies a fontset consisting of an 18-point Courier font (if available) for some characters in the users data, and an 18-point Gothic font for the others.
Motif-based applications sometimes need direct access to the font set contained in a font list. For example, an application that uses a DrawingArea widget may want to label one of the images drawn there. The following sample code shows how to extract a font set from a font list. In this example, the tag XmFONTLIST_DEFAULT_TAG looks for the font set because this is the tag that says "codeset of the locale." Applications should use the tag XmFONTLIST_DEFAULT_TAG for any string that could contain localized data.
XFontSet FontList2FontSet( XmFontList fontlist) { XmFontContext context; XmFontListEntry next_entry; XmFontType type_return = XmFONT_IS_FONT; char* font_tag; XFontSet fontset; XFontSet first_fontset; Boolean have_font_set = False; if ( !XmFontListInitFontContext(&context, fontlist)) { XtWarning("fl2fs: can't create fontlist context..."); exit 0; } while ((next_entry = XmFontListNextEntry(context) != NULL) { fontset = (XFontSet) XmFontListEntryGetFont(next_entry, &type_return); if (type_return == XmFONT_IS_FONTSET ) { font_tag = XmFontListEntryGetTag(next_entry); if (!strcmp(XmFONTLIST_DEFAULT_TAG, font_tag) { return fontset; } /* Remember the 1st fontset, just in case... */ if (!have_font_set) { first_fontset = fontset; have_font_set = True; } } } if (have_font_set) return first_fontset; return (XFontSet)NULL; }