1

XmLabelサーバー側の XLFD フォント ( )を使用して、Unicode (実際にはキリル文字) を表示しようとしています-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1。工場として使用XmStringCreate()するときはいつでも、結果は私の期待に応えます。XmStringCreateLtoR()XmString

XmStringGenerate()ただし、ファクトリを使用しようとするとXmMULTIBYTE_TEXT、マルチバイトの Unicode 文字列またはXmWIDECHAR_TEXTワイド文字列のいずれかを渡すと、使用するフォントに関係なく、ガベージが画面にレンダリングされます (UTF-8サーバー側で 1 バイトのキリル文字と 1 バイトのキリル文字の両方を試しました)。フォント)。

結果を以下に示します (最初の 2 行は問題ありませんが、2 番目から 6 番目のラベルは で作成されておりXmStringGenerate()、明らかに問題があります)。

ここに画像の説明を入力

完全なコード (Motif 2.1+ および C99 準拠のコンパイラが必要) はこちらです。

(だけでなく) UnicodeXmStringGenerate()文字を表示するのに適した実用的な例を誰かが提案できますか?ISO-8859-1

4

1 に答える 1

1

XmMULTIBYTE_TEXTnmが示唆するように、ロケール依存であり、 CJK (つまり、ローマおよびスラブ言語) を除いて、UTF-8ロケールでのみ使用できます。コア X11 フォントは、次のいずれかのフォント( XmFONT_IS_FONT)として指定できます。

-monotype-arial-medium-r-normal--*-90-*-*-p-*-iso10646-1

またはフォントセット( XmFONT_IS_FONTSET):

-monotype-arial-medium-r-normal--*-90-*-*-p-*-*-*:

モードについて言えばXmWIDECHAR_TEXT、明示的なエンコーディングで適切なフォントを指定することは不可能に思えますが、代わりにフォント セットを設定すると、Motif 2.1 から 2.3 で完全に機能します。

于 2016-04-06T10:41:58.593 に答える