kivy标签中的多行文字(python-bidi)

时间:2015-07-05 21:47:38

标签: python label kivy persian

我有一个标签,用于显示波斯语中的多行文字

kv文件:

    <FarsiLabel@Label>:
        font_name: 'tabassom'

    FarsiLabel:
        text: set_text('پیروزی  برای افرادی امکان پذیر است که از مبارزه دست نمی کشند\n')
        text_size: self.size
        halign: 'center'
        color: utils.get_color_from_hex('546E7A')

set_text方法:

    def set_text(text):
        text = unicode(text, 'utf-8')
        result = arabic_reshaper.reshape(text)
        result = get_display(result)
        return result

结果(不正确的):

enter image description here

正确的结果(gimp):

enter image description here

我发现python-bidi中的问题get_display方法,但我不知道如何解决它

问题是:如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这就是bidi.algorithm.get_display的工作原理,它颠倒了字母的顺序。所以你认为它是第一个单词是输出中的最后一个单词。

您应该以字符检测标签的宽度,并自行进行分割。然后在每一行上应用get_display

  • 第1行:پیروزیبرایافرادیامکانپذیراستکهازمبارزه
  • 第2行:دستنمیکشند