我有一个使用pango的文本框实现.如果我把一个以从右到左的脚本开头的字符串,后跟一个空格,然后是从左到右的脚本中的单词,那么pango使用的自动翻译就会搞砸(使用PANGO_WRAP_WORD_CHAR
).对于字符串العربيةENGLISH,我得到以下内容:
如果我U+200F
在空格后添加unicode字符,那么我得到预期的自动换行:
另外,如果我用印地语替换上面的阿拉伯语脚本(从左到右,就像它旁边的英语一样),那么我仍然会遇到问题,所以它似乎不是严格的从左到右,对吧到左边的东西.在印地语的情况下,我放入一个hack,0x200E
在空格后插入一个解决问题的空间.
这是pango中的一个错误吗?是否有我可以尝试的解决方案,足以解决问题而不打破其他情况?目前我正在使用基于字符串中前一个强定向字符的方向在每个空格中插入0x200E
或插入0x200F
,但我不确定是否存在某些字符串会导致问题.
更新:我能够使用gedit在Ubuntu 12.04上重现此问题(启用文本环绕并且在启用两行设置时不执行拆分).我简单地输入Hello world
一遍又一遍,直到它包裹好几次,然后替换的所有实例world
有????????
,一切晕倒一行.
这些符号是左右标记U+200F
和U+200E
左右标记.S:
在每个英文文本和阿拉伯文本之间,放置一个左右标记
在每个阿拉伯文本和英文文本之间,放置一个左移标记
这是一个错误,因为Pango应该自动查看文本但是Pango不这样做,你应该手动完成.