XtWarning ("Internal error −− can't open file");
return NULL;
}
if (fstat (fd, &statb) == −1 ||
!(text = XtMalloc ((len = statb.st_size) + 1))) {
XtWarning ("Internal error −− can't show text");
close (fd);
return NULL;
}
(void) read (fd, text, len);
text[len] = 0;
str = XmStringCreateLtoR (text, XmFONTLIST_DEFAULT_TAG);
XtFree (text);
close (fd);
*lines = XmStringLineCount (str);
return str;
}
Since separators are considered to be line breaks, we can count the number of lines in the compound string using the
function XmStringLineCount(). However, this does not imply that separators terminate compound strings or
cause font changes. As we have shown, a separator can be inserted into the middle of a compound string without
terminating it. The fact that separate segments are created has little significance unless you need to convert compound
strings back into C strings, which we discuss in Section #sstringcvt.
20.2.4 Multiple−font Strings
Once multiple font list tags are specified in a font list, you can use the list to display more than one font or font set in a
single compound string. You can create a multi−font string in one of two ways: create the compound text in segments
or create separate compound strings. Either way, once the segments or strings have been created, they must be
concatenated together to form a new compound string that has font−change information embedded in it. the source
code demonstrates the creation of a compound string that uses three fonts. XtSetLanguageProc() ...