大量 Unicode 字符无法在 kivy TextInput 中正确呈现
Large number of Unicode characters not rendering correctly in a kivy TextInput
问题:如何使用 Kivy 在 TextInput 中正确呈现所有 Unicode 字符?
下面有更多详细信息
我正在生成 0x0200 和 0x9990 之间范围内的随机 Unicode 字符,这是一个很大的问题,因为大部分字符无法在 TextInput 中正确呈现,更具体地说,只有不到一半的字符可以工作。
任何不呈现的东西最终看起来像一个带有 x 的小矩形,但是当我将它复制并粘贴到另一个显示源时它工作正常。我已经 运行 代码在空闲状态下显示正常,问题似乎出在 kivy 上,关于为什么会发生这种情况有什么建议吗?
import random
import kivy
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.app import App
kivy.require('1.9.1')
class testclass(object):
def example(self, event):
k_len = list()
complete = ''
for i in range(32):
k_len.append(random.randint(0x0200, 0x9990))
for i in k_len:
if i != 32:
complete += chr(i)
result.text = complete
t = testclass()
Root = Widget(size = (600, 200))
buttonOne = Button(text = 'click me', pos = (1,170), size = (120,30))
buttonOne.bind(on_press = t.example)
result = TextInput(hint_text = 'Output: ', size = (600, 50), pos = (0, 0), multiline = (True))
Root.add_widget(buttonOne)
Root.add_widget(result)
class testappApp(App):
def build(self):
return Root
Window.size = (600, 200)
if __name__ == '__main__':
testappApp().run()
此代码仅在您设置了 kivy 时才有效,您可以调整它以使其在闲置时工作,但正如我所说,代码按预期工作,只是在 kivy 中显示不正确:)
您的字体似乎不支持这些字符 - 切换到支持该范围的另一种字体(请参阅 https://en.wikipedia.org/wiki/Unicode_block 以了解有关需要包含的内容的更多信息)
问题:如何使用 Kivy 在 TextInput 中正确呈现所有 Unicode 字符?
下面有更多详细信息
我正在生成 0x0200 和 0x9990 之间范围内的随机 Unicode 字符,这是一个很大的问题,因为大部分字符无法在 TextInput 中正确呈现,更具体地说,只有不到一半的字符可以工作。
任何不呈现的东西最终看起来像一个带有 x 的小矩形,但是当我将它复制并粘贴到另一个显示源时它工作正常。我已经 运行 代码在空闲状态下显示正常,问题似乎出在 kivy 上,关于为什么会发生这种情况有什么建议吗?
import random
import kivy
from kivy.uix.textinput import TextInput
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.app import App
kivy.require('1.9.1')
class testclass(object):
def example(self, event):
k_len = list()
complete = ''
for i in range(32):
k_len.append(random.randint(0x0200, 0x9990))
for i in k_len:
if i != 32:
complete += chr(i)
result.text = complete
t = testclass()
Root = Widget(size = (600, 200))
buttonOne = Button(text = 'click me', pos = (1,170), size = (120,30))
buttonOne.bind(on_press = t.example)
result = TextInput(hint_text = 'Output: ', size = (600, 50), pos = (0, 0), multiline = (True))
Root.add_widget(buttonOne)
Root.add_widget(result)
class testappApp(App):
def build(self):
return Root
Window.size = (600, 200)
if __name__ == '__main__':
testappApp().run()
此代码仅在您设置了 kivy 时才有效,您可以调整它以使其在闲置时工作,但正如我所说,代码按预期工作,只是在 kivy 中显示不正确:)
您的字体似乎不支持这些字符 - 切换到支持该范围的另一种字体(请参阅 https://en.wikipedia.org/wiki/Unicode_block 以了解有关需要包含的内容的更多信息)