Kivy: μ•„λžμ–΄ ν…μŠ€νŠΈ μž…λ ₯

에 λ§Œλ“  2013λ…„ 10μ›” 19일  Β·  38μ½”λ©˜νŠΈ  Β·  좜처: kivy/kivy

타이핑 μ‹œκ°„μ— μ–΄λ–»κ²Œ ν…μŠ€νŠΈλ₯Ό λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? http://postimg.org/image/u40ftpwm9/ http://postimg.org/image/ibefw8b89/ kivyλ₯Ό μž…λ ₯ν•  λ•Œ μ•Œ 수 μžˆλ“―μ΄ λ‹¨μ–΄μ˜ λͺ¨μ–‘이 잘λͺ»λ˜μ–΄ 이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ "arabic reshaper"λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. . 이제 λ³€ν™˜ λ²„νŠΌμ„ μ‚¬μš©ν•˜μ—¬ μˆ˜μ •ν•  수 μžˆμ§€λ§Œ λ³€ν™˜ λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•Šκ³  μž…λ ₯ μ‹œκ°„μ— 이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

이 문제λ₯Ό λ’·λ°›μΉ¨ν•˜κ³  μ‹ΆμœΌμ‹ κ°€μš”? ν˜„μƒκΈˆμ„ κ²Œμ‹œν•˜μ‹­μ‹œμ˜€! μš°λ¦¬λŠ” Bountysource λ₯Ό 톡해 ν˜„μƒκΈˆμ„ λ°›μŠ΅λ‹ˆλ‹€.

Has PR Feature

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ €λŠ” kivy λ‚΄λΆ€μ˜ ν…μŠ€νŠΈ 글리프 정보λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ harfbuzz λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•œ 파이썬 바인딩을 λ§Œλ“€κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬λŠ” μ»€μ„œκ°€ μ œκ³΅ν•˜λŠ” μ„ΈλΆ€ μ •λ³΄λ‘œ μ»€μ„œλ₯Ό 이동할 수 μžˆμŠ΅λ‹ˆλ‹€. python-bidi와 pyharfbuzz λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ kivy에 λŒ€ν•œ λ‹€κ΅­μ–΄ 지원이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λͺ¨λ“  38 λŒ“κΈ€

insert_textλ₯Ό μž¬μ •μ˜ν•˜κ³  μ•„λžμ–΄ re-shaperλ₯Ό 톡해 ν…μŠ€νŠΈλ₯Ό μ „λ‹¬ν•˜μ—¬ μž…λ ₯을 사전 μ²˜λ¦¬ν•˜μ‹­μ‹œμ˜€.

이것은 μ—¬μ „νžˆ ​​해킹이며 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½μœΌλ‘œ 언어에 λŒ€ν•œ μ μ ˆν•œ 지원이 ν•„μš”ν•©λ‹ˆλ‹€. κΈ°μ—¬/ν’€ μš”μ²­μ€ 항상 ν™˜μ˜ν•©λ‹ˆλ‹€. RtoL 언어에 μ΅μˆ™ν•œ μ‚¬λžŒμ΄ 이에 μ‹œκ°„μ„ ν• μ• ν•  수 μžˆλ‹€λ©΄ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

κ·€ν•˜μ˜ 닡변에 λŒ€ν•œ tnx. api refrenceμ—μ„œ "insert_text(substring, from_undo=False)"λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. κ°„λ‹¨ν•œ μ‚¬μš© 예λ₯Ό λ“€μ–΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” kivyμ—μ„œ μ•„μ£Ό μƒˆλ‘­μŠ΅λ‹ˆλ‹€.

ν…μŠ€νŠΈ μž…λ ₯μ—μ„œ rtl에 halign을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

TextInput은 아직 정렬을 μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 즉, μ‹€μ œλ‘œ RtoL 언어에 λŒ€ν•œ μ μ ˆν•œ 지원이 ν•„μš”ν•˜λ‹€κ³  λ§ν–ˆμŠ΅λ‹ˆλ‹€.

μ’‹μ•„μš” . insert_text μ˜ˆμ œλŠ” μ–΄λ–»μŠ΅λ‹ˆκΉŒ?

이 SO κ²Œμ‹œλ¬Όμ€ http://stackoverflow.com/questions/17840496/kivy-is-there-a-boundedstring-property-available-for-textinputs μ˜ˆμ œμ— λŒ€ν•œ λ§ν¬μž…λ‹ˆλ‹€.

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μ—μ„œ μ•„μ£Ό μƒˆλ‘­λ‹€.

κΈ€μŽ„, μ•„λ§ˆλ„ κ·Έ λ³€ν™”μ˜ PR을 ν•˜λŠ” 것이 μ’‹μ„κΉŒ? 그것은 μΆ”κ°€
μ•„λžμ–΄ reshaper에 λŒ€ν•œ kivy의 의쑴, κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” κ΅­μ œν™”κ°€ ν•„μš”ν•©λ‹ˆλ‹€
μ–΄μ¨Œλ“ , κ·Έλž˜μ„œ 더 λ‚˜μ€ 방법이 μ—†λ‹€λ©΄ 그것이 방법이라고 μƒκ°ν•©λ‹ˆλ‹€.
μ•žμœΌλ‘œ.

μ΅œμ†Œν•œ λ…Όμ˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

당신이 λ‹Ήμ‹ μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μœ„ν•΄μ„œλ§Œ κ·Έκ²ƒμ„ν•˜κ³  μ‹Άλ‹€λ©΄, 당신은 μˆ˜μ—…μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€

클래슀 BidiTextInput(TextInput):
def _create_line_label(self, text, 힌트=False):
reshaped_text = arabic_reshaper.reshape(ν…μŠ€νŠΈ)
ν…μŠ€νŠΈ = get_display(reshaped_text)
super(BidiTextInput, self)._create_line_label(ν…μŠ€νŠΈ, 힌트)

λ‚˜λ¨Έμ§€ μ½”λ“œμ—μ„œ TextInput λŒ€μ‹  이 클래슀λ₯Ό μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. (kvμ—μ„œ
및 python, ν•„μš”ν•  λ•Œλ§ˆλ‹€ TextInput λŒ€μ‹  BidiTextInput을 ν˜ΈμΆœν•˜μ‹­μ‹œμ˜€.
그것). (BidiTextInput은 쒋은 이름이 아닐 수 μžˆμŠ΅λ‹ˆλ‹€.
μ§€κΈˆ :P)

κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” 그것이 kivy에 쒋은 μΆ”κ°€ 일 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

2013λ…„ 10μ›” 20일 μΌμš”μΌ 03:16:32AM -0700에 NimaλŠ” λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

kivy.uix.textinput.pyλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€. +1:
def _create_line_label(self, text, 힌트=False):
reshaped_text = arabic_reshaper.reshape(ν…μŠ€νŠΈ)
ν…μŠ€νŠΈ = get_display(reshaped_text)
이제 μ•„λžμ–΄μ™€ 페λ₯΄μ‹œμ•„μ–΄μ—λŠ” λ¬Έμ œκ°€ μ—†μ§€λ§Œ ν‚€λΉ„ μ½”μ–΄μ—μ„œ λ³€κ²½ν•˜κ³  쒋은 방법이 μ•„λ‹™λ‹ˆλ‹€. λ‚΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ ν…μŠ€νŠΈ μž…λ ₯이 λ‚΄ μž…λ ₯ ν…μŠ€νŠΈ 클래슀λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ? λ‚΄κ°€ λ§ν–ˆλ“―μ΄ λ‚˜λŠ” kivyμ—μ„œ μ•„μ£Ό μƒˆλ‘­λ‹€.


이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/kivy/kivy/issues/1570#issuecomment -26670261

tnx. 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½μœΌλ‘œ κ°€λŠ” 또 λ‹€λ₯Έ λ¬Έμ œκ°€ 있으며 ν•΄κ²°ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ§€κΈˆ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. 홍보? :ν”Ό

2013λ…„ 10μ›” 21일 μ›”μš”μΌ μ˜€μ „ 12:25:13 -0700에 NimaλŠ” λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

tnx. 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½μœΌλ‘œμ˜ 또 λ‹€λ₯Έ λ¬Έμ œκ°€ 있으며 ν•΄κ²° μ€‘μž…λ‹ˆλ‹€.


이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/kivy/kivy/issues/1570#issuecomment -26697061

λ‚˜λŠ” μ—¬μ „νžˆ 였λ₯Έμͺ½μ—μ„œ μ™Όμͺ½μœΌλ‘œ μž‘μ—…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ†”λ£¨μ…˜μ€ ν™”λ©΄μ˜ μ»€μ„œ μœ„μΉ˜μ™€ 해상도λ₯Ό μ–»κ³  탭을 μ‚¬μš©ν•˜μ—¬ 단어λ₯Ό μ˜¬λ°”λ₯Έ μœ„μΉ˜λ‘œ μ΄λ™ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 더 λ‚˜μ€ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?

이봐! μ•„λžμ–΄ reshaperλŠ” μ–΄λ””μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆκΉŒ?

이봐! μ•„λžμ–΄ reshaperλŠ” μ–΄λ””μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆκΉŒ?

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

hax 버전을 μ›ν•˜μ‹­λ‹ˆκΉŒ?
2014λ…„ 8μ›” 5일 μ˜€ν›„ 7μ‹œ 32뢄에 "Kashif Iftikhar" [email protected] μ—μ„œ λ‹€μŒκ³Ό 같이 μΌμŠ΅λ‹ˆλ‹€.

이봐! μ•„λžμ–΄ reshaperλŠ” μ–΄λ””μ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆκΉŒ?

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

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/kivy/kivy/issues/1570#issuecomment -51223419.

ν…μŠ€νŠΈ μž…λ ₯의 경우 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

def _create_line_label(self, text, 힌트=False):
reshaped_text = arabic_reshaper.reshape(ν…μŠ€νŠΈ)
ν…μŠ€νŠΈ = get_display(reshaped_text)
TextInput에 μΆ”κ°€ν•˜λ©΄ λ‹€μŒμ„ 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.
역좔적(κ°€μž₯ 졜근 호좜 λ§ˆμ§€λ§‰):
파일 "/home/sajad/PycharmProjects/kimiastone/Persian.py", 112ν–‰,
myApp().run()
파일 "/usr/local/lib/python2.7/dist-packages/kivy/app.py", 824ν–‰, μ‹€ν–‰ 쀑
ν„°μΉ˜μ•± μ‹€ν–‰()
runTouchAppμ—μ„œ 파일 "/usr/local/lib/python2.7/dist-packages/kivy/base.py", 487ν–‰
EventLoop.window.mainloop()
파일 "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", 라인 401, 메인 루프
self._mainloop()
파일 "/usr/local/lib/python2.7/dist-packages/kivy/core/window/window_pygame.py", 288ν–‰, _mainloop
이벀트 루프.idle()
파일 "/usr/local/lib/python2.7/dist-packages/kivy/base.py", 327ν–‰, 유휴 μƒνƒœ
μ‹œκ³„.ν‹±()
파일 "/usr/local/lib/python2.7/dist-packages/kivy/clock.py", 483ν–‰, 눈금
self._process_events()
파일 "/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ν–‰, 눈금
ret = 콜백(self._dt)
파일 "/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.size))
AttributeError: 'NoneType' κ°œμ²΄μ— '크기' 속성이 μ—†μŠ΅λ‹ˆλ‹€.

μ €λŠ” ν˜„μž¬ kivy의 rtl 지원 μž‘μ—…μ„ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ c(cython) μ—μ„œ reshaperλ₯Ό κ΅¬ν˜„ν•˜μ—¬ μ‹œμž‘ν•  κ³„νšμž…λ‹ˆλ‹€. μ–΄λ– ν•œ μ œμ•ˆ ?

cμ—λŠ” reshaperκ°€ μ—†μ§€λ§Œ cython 및 python arabic reshaper 및 bidiλ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

algin 속성과 같은 μœ„μ ―μ— μ•½κ°„μ˜ 변경이 μžˆμ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
μœ„μ ― μ•ŒκΈ΄ 지원 μž‘μ—… μ€‘μž„

λ‚˜λŠ” Windows xλ₯Ό 0으둜 κ΅μ²΄ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μœ μΌν•œ 어렀움은 μ—¬λŸ¬ 쀄 ν…μŠ€νŠΈ μž…λ ₯, 선택 및 λ§ˆν¬μ—…μž…λ‹ˆλ‹€. LabelBase의 클래슀(SDL, PyGame & Pil)λŠ” κ·Έλ ‡κ²Œ ν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @pylover κ²°κ³Όλ₯Ό μ–»μ—ˆμŠ΅λ‹ˆκΉŒ? 이 일을 μ§„ν–‰ν•˜λŠ” 것이 쒋을 κ²ƒμž…λ‹ˆλ‹€ :)

ν₯λ―Έλ‘­μ§€λ§Œ μ‹œκ°„μ΄ μ—†μŠ΅λ‹ˆλ‹€.
λ‹€μŒ 달에 kivy와 ν•¨κ»˜ ν”„λ‘œμ νŠΈλ₯Ό κ³„νšν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν•  수 μžˆλŠ” 쒋은 기회라고 μƒκ°ν•©λ‹ˆλ‹€.

μ €λŠ” λ°”λ‘œ μ§€κΈˆ μ‹œμž‘ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” ν‚€λΉ„λ₯Ό μ‚¬λž‘ν•œλ‹€

λ”°λ₯΄λ‹€

μ•ˆλ…•
λͺ¨λ“  아이디어 κ°μ‚¬ν•©λ‹ˆλ‹€
κ·ΈλŸ¬λ‚˜ ν•΄κ²°λ˜μ§€ μ•Šμ€ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€
λ¬Έμ œλŠ” .py νŒŒμΌμ„ .apk 파일둜 λ³€ν™˜ν•  λ•Œ Android μ‹œμŠ€ν…œμ—μ„œ ν…μŠ€νŠΈ μž…λ ₯의 인코딩이 'str'이고 μœ ν˜•μ΄ 16μ§„λ²•μ΄μ§€λ§Œ reshaperκ°€ μœ λ‹ˆμ½”λ“œ utf-8을 μ–»λŠ” μƒˆλ‘œμš΄ 문제λ₯Ό λ°œκ²¬ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.
이제 μ–΄λ–»κ²Œ reshaperλ₯Ό μœ„ν•΄ μœ λ‹ˆμ½”λ“œλ‘œ λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@motad333 , 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. kivy의 핡심 κ°œλ°œμžκ°€ 당신을 λ„μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ 였래된 κ²ƒμœΌλ‘œ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 이상 ν™œλ™μ΄ μ—†μœΌλ©΄ νμ‡„λ©λ‹ˆλ‹€. κ·€ν•˜μ˜ 기여에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

μ»€μ„œλŠ” 페λ₯΄μ‹œμ•„μ–΄/μ•„λžμ–΄ ν…μŠ€νŠΈ μž…λ ₯에 버그가 있으며 SDL이 이 문제λ₯Ό ν•΄κ²°ν•  λ•ŒκΉŒμ§€ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ¬Έμ œλŠ” kivy.core.label.LabelBase.get_extents()μ—μ„œ λ°œμƒν•©λ‹ˆλ‹€. 파이 κ²Œμž„, PIL 및 SDLμ—μ„œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. SDL2 ttfλ₯Ό μ‚¬μš©ν•˜λŠ” 파이 κ²Œμž„ 및 PIL 이후, μ΄λŸ¬ν•œ κ³΅κΈ‰μžμ˜ LabelBase κ΅¬ν˜„μ—λ„ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

kivy_input

λ‚΄ ν¬ν¬μ—λŠ” 페λ₯΄μ‹œμ•„μ–΄/μ•„λžμ–΄ λ ˆμ΄λΈ”/λ²„νŠΌμ— λŒ€ν•œ μˆ˜μ • 사항이 ν¬ν•¨λ˜μ–΄ μžˆμ§€λ§Œ κΈ°λ³Έ 글꼴이 페λ₯΄μ‹œμ•„μ–΄μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ‚¬μš©μžλŠ” font_name을 μœ νš¨ν•œ 페λ₯΄μ‹œμ•„μ–΄/μ•„λžμ–΄ font_name으둜 λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ›ν•˜λŠ” 경우 PR을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

νŽΈμ§‘: μ•„λžμ–΄/파λ₯΄μ‹œ λ Œλ”λ§μ—μ„œ SDL2의 문제λ₯Ό 찾으렀고 ν•˜μ§€λ§Œ κΈ€κΌ΄/ν…μŠ€νŠΈ λ Œλ”λ§ μž‘λ™ 방식에 λŒ€ν•œ 이전 κ²½ν—˜μ΄ μ—†μŠ΅λ‹ˆλ‹€.

@RevengeComing ..hi λ‚΄ μ•±μ—μ„œ 이 μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. 방법을 μ•Œλ €μ£Όμ‹€ 수 μžˆλ‚˜μš”?

@engmms , κ·ΈλŸ¬λ‚˜ μœ νš¨ν•œ μ†”λ£¨μ…˜μ€ μ•„λ‹ˆμ§€λ§Œ λ‚΄ 포크λ₯Ό μ„€μΉ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
pip install git+https://github.com/RevengeComing/kivy.git
( rtl, arabic_reshaper, python-bidi λ₯Ό μ„€μΉ˜ν•΄μ•Ό ν•  μˆ˜λ„ 있고 pip둜 μ„€μΉ˜ν•΄μ•Ό ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€)

그리고 κΈ°λ³Έ 글꼴이 페λ₯΄μ‹œμ•„μ–΄/μ•„λžμ–΄λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ‘μš© ν”„λ‘œκ·Έλž¨μ— 페λ₯΄μ‹œμ•„μ–΄/μ•„λžμ–΄ 글꼴을 μΆ”κ°€ν•˜κ³  Labels/Buttons/TextInputs의 λͺ¨λ“  font_name을 κΈ€κΌ΄λ‘œ λ³€κ²½ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ €λŠ” kivy λ‚΄λΆ€μ˜ ν…μŠ€νŠΈ 글리프 정보λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ harfbuzz λΌμ΄λΈŒλŸ¬λ¦¬μ— λŒ€ν•œ 파이썬 바인딩을 λ§Œλ“€κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μš°λ¦¬λŠ” μ»€μ„œκ°€ μ œκ³΅ν•˜λŠ” μ„ΈλΆ€ μ •λ³΄λ‘œ μ»€μ„œλ₯Ό 이동할 수 μžˆμŠ΅λ‹ˆλ‹€. python-bidi와 pyharfbuzz λ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ kivy에 λŒ€ν•œ λ‹€κ΅­μ–΄ 지원이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‹€μ‹œ μ•ˆλ…•,

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ kivy_i18n μ €μž₯μ†Œλ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
peek 2018-01-22 16-23

ν˜„μž¬ linux(py3, py2) 및 mac(py3) 만 μ§€μ›ν•˜λŠ” pyharfbuzz 및 python-fribidi 와 harfbuzz, fribidi, freetype2κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

TextInputμ—λŠ” rtl이 μ•„λ‹Œ 것과 같은 λͺ‡ 가지 λ¬Έμ œκ°€ 있고 ... ν•˜μ§€λ§Œ 여기에 μ΄λŸ¬ν•œ κΈ°λŠ₯을 μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€.

ok @RevengeComing... μ–΄λ €μš΄ 말씀 κ°μ‚¬ν•©λ‹ˆλ‹€..

@RevengeComing ...이 μ†”λ£¨μ…˜μ„ ν…ŒμŠ€νŠΈν•˜κ² μŠ΅λ‹ˆλ‹€

이제 KIVY_TEXT=pangoλ₯Ό μ‚¬μš©ν•˜μ—¬ λ§ˆμŠ€ν„°μ—μ„œ μ‹€ν—˜μ  지원을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ μ•„λŠ” ν•œ 이 μ†”λ£¨μ…˜μ€ Linux 및 OSXμ—μ„œλ§Œ μž‘λ™ν•˜μ§€λ§Œ Windows 및 λͺ¨λ°”일 ν”Œλž«νΌμ—μ„œ μž‘λ™ν•˜λ €λ©΄ 더 λ§Žμ€ μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

@RevengeComing @tshirtman μ•ˆλ…• 친ꡬ, 무슨 일이야? 이 κΈ°λŠ₯을 λͺ¨λ°”일 및 Windows μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 톡합할 μ€€λΉ„κ°€ λ˜μ—ˆμŠ΅λ‹ˆκΉŒ?μ €λŠ” μ§€κΈˆ Windows보닀 Androidκ°€ 더 μ€‘μš”ν•©λ‹ˆλ‹€. 페λ₯΄μ‹œμ•„μ–΄/νŒŒμ‹œμ–΄ μ‚¬μš©μžλ₯Ό μœ„ν•œ 어리석은 ν•΄κ²° 방법 쀑 ν•˜λ‚˜λŠ” Finglishλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰