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 2 行没问题,第 2 到第 6 个标签是用创建的XmStringGenerate(),显然不是ok):

在此处输入图像描述

完整的代码(需要 Motif 2.1+ 和符合 C99 的编译器)在这里

任何人都可以建议一个XmStringGenerate()适合显示Unicode字符(不仅仅是ISO-8859-1)的工作示例吗?

4

1 回答 1

1

XmMULTIBYTE_TEXT正如nm所建议的那样,它依赖于语言环境,并且除了CJK(即罗马和斯拉夫语言)之外,只能在UTF-8语言环境中使用。Core 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 回答