我有一個使用pango的文本框實現。如果我把一個字符串從右到左腳本中的一個單詞開頭,後跟一個空格,然後是從左到右的單詞,那麼pango使用的單詞會變得混亂(使用PANGO_WRAP_WORD_CHAR
)。對於字符串العربيةENGLISH我得到如下:用混合腳本在pango中換行
如果我的空間之後添加的Unicode字符U+200F
,然後我得到了預期的自動換行:
而且,如果我用印地語替換上面的阿拉伯語腳本(從左到右像英語旁邊的那樣),那麼我仍然會遇到問題,所以它似乎不是一個嚴格的從左到右,左至右的東西。在印度語的情況下,我放入一個黑客,在解決問題的空間之後插入0x200E
。
這是一個在pango中的錯誤?是否有解決方法,我可以嘗試通用,足以解決問題但不破壞其他情況?目前我正在使用的工作是在每個空格之後插入一個0x200E
或0x200F
,這個空格基於字符串中前一個強指示字符的方向,但我不確定是否存在會導致問題的某些字符串。
更新:我能重現此問題在Ubuntu 12.04用gedit(與啓用文字環繞和不要超過兩行啓用設置不拆分的話)。我一遍又一遍地輸入Hello world
,直到它被多次包裹,然後用पहुंचगया
替換world
的所有實例,並且所有東西都摺疊成一行。
這個問題在pango裏面有一個單詞RTL後的LTR單詞(或者反過來)作爲一個單詞,所以如果你選擇在單詞上換行,它不會在兩個單詞上打破它。 –
我更新了問題,提到當我只交替使用LTR腳本時(例如英語和印地語),問題也會發生 – pauld