I'm trying to display some Unicode (Cyrillic, actually) using XmLabel
and a server-side XLFD font (-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1
). Whenever I use XmStringCreate()
or XmStringCreateLtoR()
as an XmString
factory, the result meets my expectations.
When I try to use XmStringGenerate()
factory, however, passing in either XmMULTIBYTE_TEXT
for a multi-byte Unicode string, or XmWIDECHAR_TEXT
for a wide string, garbage is rendered onto the screen, regardless of the font used (I tried both UTF-8
and single-byte Cyrillic server-side fonts).
The result can be seen below (the 1st 2 lines are ok, 2nd through 6th labels were created with XmStringGenerate()
and are obviously not ok):
The complete code (requires Motif 2.1+ and a C99-compliant compiler) is here.
Can anyone suggest a working XmStringGenerate()
example suitable for displaying Unicode characters (not just ISO-8859-1
)?
XmMULTIBYTE_TEXT
is locale-dependent, as n.m suggested, and, aside from CJK (i. e. for Roman and Slavic languages), can only be used in UTF-8
locales. Core X11 fonts can be specified as either fonts (XmFONT_IS_FONT
):
-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1
or font sets (XmFONT_IS_FONTSET
):
-monotype-arial-medium-r-normal--*-90-*-*-p-*-*-*:
Speaking of XmWIDECHAR_TEXT
mode, it seems impossible to specify a proper font with an explicit encoding, but setting a font set instead works perfectly for Motif 2.1 through 2.3.