pythonkivyfarsi

is there a way to write Persian in python kivy


i try to write Persian in python kivy but it is not working.

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder
from kivy import Config
from kivy.uix.label import Label
from kivy.uix.widget import Widget


class MainApp(App):
    def build(self):
        return Label(text= "فارسی")

if __name__ == "__main__":
    MainApp().run()

Solution

  • You need to use some Persian font. I have done it with Arabic text

    You can download the font from here

    Then use arabic_reshaper library to get it in shape.

    pip install arabic-reshaper
    

    You will also need python-bidi as well to flip the letters

    pip install python-bidi
    

    Refer to this https://github.com/mpcabd/python-arabic-reshaper

    Code

    from kivy.app import App
    from kivy.uix.screenmanager import ScreenManager,Screen
    from kivy.lang import Builder
    from kivy import Config
    from kivy.uix.label import Label
    from kivy.uix.widget import Widget
    import arabic_reshaper
    from bidi.algorithm import get_display
    
    class MainApp(App):
        def build(self):
            reshaped_text = arabic_reshaper.reshape("فارسی")
            bidi_text = get_display(reshaped_text)
            
            return Label(text= bidi_text, font_name='Amiri-Regular.ttf', font_size=30)
    
    if __name__ == "__main__":
        MainApp().run()
    

    Output

    enter image description here