2015-07-05 13 views
5

ho un'etichetta che mostrano un testo multilinea in Persianotesto multilinea in etichetta kivy (python-bidi)

file di kv: metodo

<[email protected]>: 
     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 

risultato (errato):

enter image description here

risultato corretto (gimp):

enter image description here

Ho trovato che il problema nel metodo get_display python-bidi, ma non so come risolverlo domanda

è: come risolvere questo problema?

risposta

2

Ecco come funziona bidi.algorithm.get_display, inverte l'ordine delle lettere. Quindi quello che consideri come la prima parola è l'ultima parola in uscita.

È necessario rilevare la larghezza dell'etichetta nei caratteri e eseguire personalmente la segmentazione in linee. Quindi applicare get_display su ogni riga.

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