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

时间:2015-04-15 20:07:13

标签: unicode xlib

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

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

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

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

2 个答案:

答案 0 :(得分:2)

如何使用XDrawString系列(http://www.x.org/wiki/guide/fonts/)?具体来说,使用Xutf8DrawString()

答案 1 :(得分:0)

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

然后,您将需要一种utf8toXChar2b转换功能,例如Alan所描述的功能。该解决方案依赖于Xutil.h,我相信它是Xlib(在Arch linux中分发的)的标准部分-而Xft依赖于glib-2.0

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