使用 xlib 在 U+FFFF 上方绘制 Unicode 文本?

Drawing Unicode text above U+FFFF with xlib?

我想使用原始 Xlib 绘制 Unicode 文本。

我发现的仅有的两个文本绘制函数是 XDrawText(),它接受未指定编码的文本,可能是 ASCII,以及 XDrawText16(),它接受未指定编码的文本,它是可能是 UCS-2。这两个功能都让我感到悲伤。另外他们不让我使用任何高于 U+FFFF 的有用代码点。

有没有办法使用普通 Xlib 绘制非 BMP Unicode 文本?

(我对第三方字体渲染库不感兴趣。)

使用 XDrawString 家族 (http://www.x.org/wiki/guide/fonts/) 怎么样?具体来说,使用 Xutf8DrawString().

为了完整起见,您还可以使用XChar2b,这样您就可以显示最多U+FFFF的任何字符(16位编码的字符,也就是说UTF-8到 3 个字节,涵盖除数学公式和表情符号之外的所有字符 - 包括大多数中文、日文和韩文字形表示 Wikipedia)。

然后您将需要一个 utf8toXChar2b 翻译功能,例如 Alan 所描述的功能。这个解决方案依赖于 Xutil.h,我认为它是 Xlib 的标准部分(在 Arch linux 中这样分布)——而 Xft 依赖于 glib-2.0.

我提到这种可能性是因为你的问题没有明确指出 U+FFFF 以上的字符。事实上,XChar2b 并没有走那么远。