Kivy: рдЕрд░рдмреА рдкрд╛рда рдЗрдирдкреБрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЕрдХреНрддреВре░ 2013  ┬╖  38рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kivy/kivy

рдореИрдВ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЯрд╛рдЗрдо рдореЗрдВ рдХреИрд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдБ? http://postimg.org/image/u40ftpwm9/ http://postimg.org/image/ibefw8b89/ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдореИрдВ kivy рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╢рдмреНрдж рдЖрдХрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЕрд░рдмреА рд░рд┐рд╢реЗрдкрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред . рдЕрдм рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреНрд╡рд░реНрдЯ рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдХрдиреНрд╡рд░реНрдЯ рдмрдЯрди рджрдмрд╛рдП рдмрд┐рдирд╛ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдЯрд╛рдЗрдо рдореЗрдВ рдореБрдЭреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЙрд╕ рдкрд░ рдПрдХ рдЗрдирд╛рдо рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ! рд╣рдо рдмрд╛рдЙрдВрдЯреАрд╕реЛрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирд╛рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдХрд┐рд╡реА рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреА рдЯреЗрдХреНрд╕реНрдЯ рдЧреНрд▓рд┐рдлрд╝ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП harfbuzz рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬрдЧрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╣рдо рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХреЗрдВ рдЬреЛ рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИред рдЕрдЬрдЧрд░-рдмреАрдбрд╝реА рдФрд░ рдкрд╛рдЗрд╣рд░рдлрдмрдЬ рдХреЗ рдорд┐рд╢реНрд░рдг рд╕реЗ рд╣рдо рдХреАрд╡реА рдХреЗ рд▓рд┐рдП рдмрд╣реБ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 38 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрдиреНрд╕рд░реНрдЯ_рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдФрд░ рдЕрд░рдмреА рд░реА-рд╢реЗрдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдкреНрд░реА-рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдпрд╣ рдЕрднреА рднреА рдПрдХ рд╣реИрдХ рд╣реЛрдЧрд╛ рдФрд░ рд╣рдореЗрдВ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпреЛрдЧрджрд╛рди/рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рд╣рдореЗрд╢рд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдЕрдЧрд░ рдЖрд░рдЯреАрдУрдПрд▓ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХреБрдЫ рд▓реЛрдЧ рдЗрд╕ рдкрд░ рд╕рдордп рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдорджрдж рдорд┐рд▓реЗрдЧреАред

рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЯреАрдПрдирдПрдХреНрд╕ред рдореБрдЭреЗ рдпрд╣ "insert_text(substring, from_undo=False)" api refrence рдореЗрдВ рдорд┐рд▓рд╛, рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдХреАрд╡реА рдореЗрдВ рдмрд╣реБрдд рдирдпрд╛ рд╣реВрдБред

рдФрд░ рдХреНрдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдореЗрдВ рдЖрд░рдЯреАрдПрд▓ рдХреЗ рд▓рд┐рдП рд╣реИрд▓рд┐рдЧреНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдЕрднреА рддрдХ рд╕рдВрд░реЗрдЦрдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд░рдЯреАрдУрдПрд▓ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдареАрдХ ред insert_text рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдпрд╣ SO рдкреЛрд╕реНрдЯ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ

tnx рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ main.py рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ kivy рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореЗрд░рд╛ main.py рд╣реИ:

import kivy
import arabic_reshaper
from bidi.algorithm import get_display

kivy.require('1.5.1')

from kivy.app import App
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout

from components.initialize import initialize_platform
from components.ttsspeak import ttsSpeak
from kivy.uix.textinput import TextInput

class NumericInput(TextInput):

    def insert_text(self, substring, from_undo=False):
        if not from_undo:
            try:
                int(substring)
            except ValueError:
                return
        super(NumericInput, self).insert_text(substring, from_undo)

class SayThis(FloatLayout):
    saywhat_text = ObjectProperty(None)

    def say_something(self, text):
        ttsSpeak(text)

    def clear(self, text):
        print text
        reshaped_text = arabic_reshaper.reshape(text)
        text = bidi_text = get_display(reshaped_text)
        print text
        self.saywhat_text.text =  text
        self.saywhat_text.focus = True


class SayThisApp(App):
    def build(self):
        initialize_platform()
        return SayThis()


if __name__ == '__main__':
    SayThisApp().run()

рдореИрдВрдиреЗ kivy.uix.textinput.py рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛:

def _create_line_label(self, text, hint=False):
        reshaped_text = arabic_reshaper.reshape(text)
        text = get_display(reshaped_text)

рдФрд░ рдЕрдм рдЕрд░рдмреА рдФрд░ рдлрд╛рд░рд╕реА рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХреАрд╡реА рдХреЛрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЛ рдХреИрд╕реЗ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ kivy . рдореЗрдВ рдмрд╣реБрдд рдирдпрд╛ рд╣реВрдБ

рдЕрдЪреНрдЫрд╛, рд╢рд╛рдпрдж рдЙрд╕ рдмрджрд▓рд╛рд╡ рдХрд╛ рдкреАрдЖрд░ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛? рдпрд╣ рдЬреЛрдбрд╝рддрд╛ рд╣реИ a
рдХреАрд╡реА рдХреА рдЕрд░рдмреА рдкреБрдирд░реНрд╡рд┐рдХреНрд░реЗрддрд╛ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╡реИрд╕реЗ рднреА, рдЗрд╕рд▓рд┐рдП рдЬрдм рддрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрд░реАрдХрд╛ рд╣реИ
рдЖрдЧреЗред

рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рддреЛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХрдХреНрд╖рд╛ BidiTextInput (TextInput):
def _create_line_label (рд╕реНрд╡рдпрдВ, рдкрд╛рда, рд╕рдВрдХреЗрдд = рдЧрд▓рдд):
reshape_text = arabic_reshaper.reshape(text)
рдЯреЗрдХреНрд╕реНрдЯ = get_display (reshape_text)
рд╕реБрдкрд░ (BidiTextInput, self)._create_line_label (рдкрд╛рда, рд╕рдВрдХреЗрдд)

рдФрд░ рдЕрдкрдиреЗ рд╢реЗрд╖ рдХреЛрдб рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред (рдХреЗрд╡реА рдореЗрдВ
рдФрд░ рдЕрдЬрдЧрд░, рдЬрдм рднреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЗ рдмрдЬрд╛рдп BidiTextInput рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
рдпрд╣)ред (BidiTextInput рдПрдХ рдЕрдЪреНрдЫрд╛ рдирд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реВрдВ
рдЕрдм: рдкреА)

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╡реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред

рд╕реВрд░реНрдп, 20 рдЕрдХреНрдЯреВрдмрд░, 2013 рдХреЛ 03:16:32 рдкреВрд░реНрд╡рд╛рд╣реНрди -0700 рдмрдЬреЗ, рдиреАрдорд╛ рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВрдиреЗ kivy.uix.textinput.py рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛: +1:
def _create_line_label (рд╕реНрд╡рдпрдВ, рдкрд╛рда, рд╕рдВрдХреЗрдд = рдЧрд▓рдд):
reshape_text = arabic_reshaper.reshape(text)
рдЯреЗрдХреНрд╕реНрдЯ = get_display (reshape_text)
рдФрд░ рдЕрдм рдЗрд╕реЗ рдЕрд░рдмреА рдФрд░ рдлрд╝рд╛рд░рд╕реА рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХреАрд╡реА рдХреЛрд░ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдБ рдФрд░ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЛ рдХреИрд╕реЗ рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореИрдВ kivy . рдореЗрдВ рдмрд╣реБрдд рдирдпрд╛ рд╣реВрдБ


рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/kivy/kivy/issues/1570#issuecomment -26670261

рдЯреАрдПрдирдПрдХреНрд╕ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдкреАрдЖрд░? :рдкреА

рд╕реЛрдо, 21 рдЕрдХреНрдЯреВрдмрд░, 2013 рдХреЛ 12:25:13 рдкреВрд░реНрд╡рд╛рд╣реНрди -0700 рдмрдЬреЗ, рдиреАрдорд╛ рдиреЗ рд▓рд┐рдЦрд╛:

рдЯреАрдПрдирдПрдХреНрд╕ рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ


рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/kivy/kivy/issues/1570#issuecomment -26697061

рдореИрдВ рдЕрднреА рднреА рджрд╛рдПрдВ рд╕реЗ рдмрд╛рдПрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрдХреНрд░реАрди рдХреА рдХрд░реНрд╕рд░ рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рдВрдХрд▓реНрдк рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╢рдмреНрдж рдХреЛ рд╕рд╣реА рдЬрдЧрд╣ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рд╣реИ?

рдЕрд░реЗ! рдореБрдЭреЗ рдЕрд░рдмреА рд░реАрд╢реЗрдкрд░ рдХрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдЕрд░реЗ! рдореБрдЭреЗ рдЕрд░рдмреА рд░реАрд╢реЗрдкрд░ рдХрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ?

https://github.com/mpcabd/python-arabic-reshaper

рдХреНрдпрд╛ рдЖрдк рд╣реИрдХреНрд╕ рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
5 рдЕрдЧрд╕реНрдд 2014 рдХреЛ рд╢рд╛рдо 7:32 рдмрдЬреЗ, "рдХрд╛рд╢рд┐рдл рдЗрдлреНрддрд┐рдЦрд╛рд░" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдЕрд░реЗ! рдореБрдЭреЗ рдЕрд░рдмреА рд░реАрд╢реЗрдкрд░ рдХрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ?

https://github.com/mpcabd/python-arabic-reshaper

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/kivy/kivy/issues/1570#issuecomment -51223419ред

рдЯреЗрдХреНрд╕реНрдЯрд┐рдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛

def _create_line_label (рд╕реНрд╡рдпрдВ, рдкрд╛рда, рд╕рдВрдХреЗрдд = рдЧрд▓рдд):
reshape_text = arabic_reshaper.reshape(text)
рдЯреЗрдХреНрд╕реНрдЯ = get_display (reshape_text)
рдЗрд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдорд┐рд▓реЗрдЧрд╛:
рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
рдлрд╝рд╛рдЗрд▓ "/home/sajad/PycharmProjects/kimiastone/Persian.py", рдкрдВрдХреНрддрд┐ 112, рдореЗрдВ
myApp ()ред рд░рди ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/app.py", рд▓рд╛рдЗрди 824, рд░рди рдореЗрдВ
рд░рдирдЯрдЪрдРрдк ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/base.py", рд▓рд╛рдЗрди 487, runTouchApp рдореЗрдВ
EventLoop.window.mainloop ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", рд▓рд╛рдЗрди 401, рдореЗрдирд▓реВрдк рдореЗрдВ
рд╕реНрд╡._рдореЗрдирд▓реВрдк ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", рд▓рд╛рдЗрди 288, _mainloop рдореЗрдВ
EventLoop.idle ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/base.py", рд▓рд╛рдЗрди 327, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдореЗрдВ
рдШрдбрд╝реА рдХреА рдЯрд┐рдХ ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", рд▓рд╛рдЗрди 483, рдЯрд┐рдХ рдореЗрдВ
рд╕реНрд╡рдпрдВ._рдкреНрд░реЛрд╕реЗрд╕_рдЗрд╡реЗрдВрдЯреНрд╕ ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", рд▓рд╛рдЗрди 615, _process_events рдореЗрдВ
event.tick(self._last_tick, рд╣рдЯрд╛рдПрдВ)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", рд▓рд╛рдЗрди 374, рдЯрд┐рдХ рдореЗрдВ
рд░рд┐рдЯ = рдХреЙрд▓рдмреИрдХ (рд╕реНрд╡рдпрдВ._рдбреАрдЯреА)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/uix/textinput.py", рд▓рд╛рдЗрди 1512, _refresh_line_options рдореЗрдВ
self._refresh_text_from_property ()
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/uix/textinput.py", рд▓рд╛рдЗрди 1531, _refresh_text_from_property рдореЗрдВ
self._refresh_text(self._get_text(encode=False), *largs)
рдлрд╝рд╛рдЗрд▓ "/usr/local/lib/python2.7/dist-packages/kivy/uix/textinput.py", рд▓рд╛рдЗрди 1551, _refresh_text рдореЗрдВ
_line_rects.append (рдЖрдпрдд (рдЖрдХрд╛рд░ = lbl. рдЖрдХрд╛рд░))
рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрд░реБрдЯрд┐: 'рдХреЛрдИ рдирд╣реАрдВ' рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ 'рдЖрдХрд╛рд░'

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ kivy рдХреЗ rtl рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реА (рд╕рд╛рдЗрдерди) рдореЗрдВ рдПрдХ рдкреБрдирд░реНрд╡рд┐рдХреНрд░рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдХреЛрдИ рдЙрдкрд╛рдп ?

рд╕реА рдореЗрдВ рдХреЛрдИ рдкреБрдирд░реНрд╡рд┐рдХреНрд░рдп рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдк рд╕рд╛рдЗрдерди рдФрд░ рдкрд╛рдпрдерди рдЕрд░рдмреА рд░реАрд╢реЗрдкрд░ рдФрд░ рдмреАрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧрд┐рди рдкреНрд░реЙрдкрд░реНрдЯреА рдЬреИрд╕реЗ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП
рдореИрдВ рд╡рд┐рдЬреЗрдЯ рдПрд▓реНрдЧрд┐рди рд╕рдорд░реНрдерди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдХреНрд╕ рдХреЛ 0 рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛

рдПрдХрдорд╛рддреНрд░ рдХрдард┐рдирд╛рдИ рдмрд╣реБ-рдкрдВрдХреНрддрд┐-рдкрд╛рда-рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐, рдЪрдпрди рдФрд░ рдорд╛рд░реНрдХрдЕрдк рд╣реИред рд▓реЗрдмрд▓рдмреЗрд╕ рдХреА рдХрдХреНрд╖рд╛рдПрдВ (рдПрд╕рдбреАрдПрд▓, рдкрд╛рдпрдЧреИрдо рдФрд░ рдкреАрдЖрдИрдПрд▓) рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЕрд░реЗ @pylover рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреБрдЫ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛? рдЗрд╕ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ :)

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЕрдЧрд▓реЗ рдорд╣реАрдиреЗ рдХреАрд╡реА рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рдореМрдХрд╛ рд╣реИред

рдореИрдВ рдЕрднреА рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореБрдЭреЗ рдХреАрд╡реА рдкрд╕рдВрдж рд╣реИ

рдкрд╛рд▓рди тАЛтАЛрдХрд░рдирд╛

рдирдорд╕реНрддреЗ
рд╕рднреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ
рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ: рдЬрдм рдореИрдВ .py рдлрд╝рд╛рдЗрд▓ рдХреЛ .apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирдИ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯрд┐рдирдкреБрдЯ рдХрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ 'str' рд╣реИ рдФрд░ рдкреНрд░рдХрд╛рд░ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд┐рдпрд▓ рд╣реИ рд▓реЗрдХрд┐рди рд░реАрд╢реЗрдкрд░ рдпреВрдирд┐рдХреЛрдб utf-8 рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
рдЕрдм рдореИрдВ рдЗрд╕реЗ рдкреБрдирд░реНрд╡рд┐рдХреНрд░рдп рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ ??

@ motad333 , рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рдХрд┐рд╡реА рдХреЗ рдореБрдЦреНрдп рдбреЗрд╡рд▓рдкрд░ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХрд░реНрд╕рд░ рдореЗрдВ рдлрд╝рд╛рд░рд╕реА/рдЕрд░рдмреА рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдмрдЧ рд╣реИ рдФрд░ рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдПрд╕рдбреАрдПрд▓ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ред
рд╕рдорд╕реНрдпрд╛ kivy.core.label.LabelBase.get_extents() рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ pygame, PIL рдФрд░ SDL рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЪреВрдВрдХрд┐ pygame рдФрд░ PIL SDL2 ttf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрди рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд▓реЗрдмрд▓рдмреЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛ рд╣реИред

kivy_input

рдореЗрд░реЗ рдХрд╛рдВрдЯреЗ рдореЗрдВ рдлрд╝рд╛рд░рд╕реА/рдЕрд░рдмреА рд▓реЗрдмрд▓/рдмрдЯрди рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ font_name рдХреЛ рдПрдХ рдорд╛рдиреНрдп рдлрд╝рд╛рд░рд╕реА/рдЕрд░рдмреА рдлрд╝реЙрдиреНрдЯ_рдирд╛рдо рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рд░рд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВ рдЕрд░рдмреА/рдлрд╛рд░рд╕реА рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд╕рд╛рде рдПрд╕рдбреАрдПрд▓ 2 рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╝реЙрдиреНрдЯ/рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@RevengeComing ..hi рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ..рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ?

@engmms , рдлрд┐рд░ рднреА рдпрд╣ рдПрдХ рд╡реИрдз рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдореЗрд░рд╛ рдХрд╛рдВрдЯрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
pip install git+https://github.com/RevengeComing/kivy.git
(рдЖрдкрдХреЛ rtl, arabic_reshaper, python-bidi рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ pip рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)

рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдлрд╝рд╛рд░рд╕реА/рдЕрд░рдмреА рдлрд╝реЙрдиреНрдЯ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рд▓реЗрдмрд▓/рдмрдЯрди/рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд╕рднреА рдлрд╝реЙрдиреНрдЯ_рдирд╛рдо рдХреЛ рдЕрдкрдиреЗ рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝реЙрдиреНрдЯ рдлрд╝рд╛рд░рд╕реА/рдЕрд░рдмреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдХрд┐рд╡реА рдХреЗ рдЕрдВрджрд░ рдЕрдкрдиреА рдЯреЗрдХреНрд╕реНрдЯ рдЧреНрд▓рд┐рдлрд╝ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП harfbuzz рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬрдЧрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рд╣рдо рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХреЗрдВ рдЬреЛ рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИред рдЕрдЬрдЧрд░-рдмреАрдбрд╝реА рдФрд░ рдкрд╛рдЗрд╣рд░рдлрдмрдЬ рдХреЗ рдорд┐рд╢реНрд░рдг рд╕реЗ рд╣рдо рдХреАрд╡реА рдХреЗ рд▓рд┐рдП рдмрд╣реБ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕реЗ рд╣реИрд▓реЛ,

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ kivy_i18n рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдИ:

рдкрд░рд┐рдгрд╛рдо рд╣реИ:
peek 2018-01-22 16-23

рдЗрд╕рдХреЗ рд▓рд┐рдП pyharfbuzz рдФрд░ python-fribidi рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЕрднреА рдХреЗрд╡рд▓ linux(py3, py2) рдФрд░ mac(py3) рдХреЗ рд╕рд╛рде-рд╕рд╛рде harfbuzz, fribidi, freetype2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

TextInput рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ рдЬреИрд╕реЗ rtl рдирд╣реАрдВ рд╣реЛрдирд╛ рдФрд░ ... рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдореЗрдВ рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реВрдБрдЧрд╛ред

рдареАрдХ рд╣реИ @RevengeComing...рдЖрдкрдХреЗ рдХрдбрд╝реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж ..

@RevengeComing ... рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛

KIVY_TEXT=pango . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдм рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдерди рдЙрдкрд▓рдмреНрдз рд╣реИ

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ Linux рдФрд░ OSX рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@RevengeComing @tshirtman рд╣рд╛рдп рджреЛрд╕реНрдд, рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдореЛрдмрд╛рдЗрд▓ рдФрд░ рд╡рд┐рдВрдбреЛрдЬрд╝ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ? рдореИрдВ рдЕрднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп Android рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реВрдБред рдлрд╝рд╛рд░рд╕реА/рдлрд╝рд╛рд░рд╕реА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдлрд╝рд┐рдВрдЧрд▓рд┐рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

knappador picture knappador  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asmith26 picture asmith26  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

37 picture 37  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Michael-F-Bryan picture Michael-F-Bryan  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

frankgould picture frankgould  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ