XmString
Motifの「複合文字列」。各セグメントがフォントと書字方向を選ぶタグを持つ不透明な型で、ラベルもボタンもリスト行も、普通のC文字列の代わりにこれを要求する。
発想はUnicode以前の国際化だった。ボタンの文言にラテン文字と日本語のセグメントを混在させられ、それぞれが自分のタグを持つ。ヘブライ語のラベルは右から左と宣言できる。タグはXmFontList、Motif 2.0以降はレンダーテーブルで引かれ、レンダーテーブルはセグメントごとに色や下線、タブ位置も持て、Motif 2.3からはXftフォントも指せる。実際にはほぼ全員が既定タグXmFONTLIST_DEFAULT_TAGを使い、プログラマの記憶に残るのは儀式の方だ。リテラルごとにXmStringCreateLocalizedを呼び、XmNlabelStringに設定し、最後にXmStringFreeを忘れない。忘れるとラベルを再描画するたびに数バイト漏れる。char*に戻すにはXmStringGetLtoR、後にはXmStringUnparseを使った。
リソースファイルやUILでは普通のテキストとして書けばMotifが変換してくれたので楽な道だった。だがC言語のコードでは至るところにこの型が現れ、のちにUTF-8の普通の文字列で済ませたツールキットと比べて、Motifを冗長にした要因の一つである。