我有一个使用pango的文本框实现。如果我在从右至左的脚本中放置一个单词开头的字符串,然后是一个空格,然后在从左至右的脚本中放置单词,则pango使用的自动换行会被弄乱(使用PANGO_WRAP_WORD_CHAR
)。对于字符串العربيةENGLISH,我得到以下信息:
如果在空格后添加unicode字符U+200F
,则可以得到预期的自动换行:
另外,如果我将上面的阿拉伯文字替换为北印度语(从左到右,就像旁边的英语一样),那么我仍然会遇到问题,因此,这似乎并不是严格意义上的从左至右到左的东西。在印地语的情况下,我放入了一个hack,该hack在解决问题的空间后插入了0x200E
。
这是pango中的错误吗?我是否可以尝试一些解决方法,这些解决方法足以解决问题,但又不破坏其他情况?我正在使用的当前解决方法是,根据字符串中前一个强方向字符的方向,在每个空格后插入0x200E
或0x200F
,但是我不确定是否存在某些会引起问题的字符串。
更新:我能够在gedit上的Ubuntu 12.04上重现此问题(启用“启用文本包装”和“不要在两行上拆分单词”设置)。我只是一遍又一遍地键入Hello world
,直到它包装了好几次,然后用world
替换了पहुंचगया
的所有实例,然后所有内容都折叠成一行。
最佳答案
符号U+200F
和U+200E
是RIGHT-TO-LEFT和LEFT-TO-RIGHT标记。 S:
每个英文文本和阿拉伯文本之间的
这是一个错误,因为Pango应该在查看文本时自动执行此操作,但是由于Pango没有这样做,因此您应该手动进行操作。