10.3 Internationalized Text Output in X
Before R5, the Xlib drawing routines made the fundamental assumption that the encoding of a character was equal to the index of the character’s glyph in the font. As explained in 10.1.2 Text Representation in an Internationalized Application, this is a useful and valid assumption when text in a language can be most naturally encoded as an 8- or 16-bit wide charset. Unfortunately, it is not valid in many important cases.
R5 bases its new text output routines on a new Xlib abstraction,
the XFontSet
. An XFontSet
is bound
to the locale in which it is created, and contains all the fonts needed
to display text in that locale, or all the independent charsets used in
the encoding of that locale. Technical Japanese text, for example, often
mixes Latin with Japanese characters, so for a Japanese locale, fonts
might be required with the charsets jisx0208.1983-0 for Kanji
ideographic characters, jisx0201.1976-0 for Kana phonetic characters,
and iso8859-1 for Latin characters.
Drawing internationalized text in R5 is conceptually very similar
to drawing text in X11R4—there are routines that allow you to query font
metrics, measure strings, and draw strings. The new R5 functions use an
XFontSet
rather than an
XFontStruct
or a font specified in a graphics
context. The drawing and measuring routines interpret text in the
encoding of the locale of the fontset, and correctly map wide or
multi-byte characters to the corresponding font glyph (or
glyphs).
10.3.1 Creating ...
Get XLIB Programming Manual, Rel. 5, Third Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.