【发布时间】:2020-12-25 22:32:23
【问题描述】:
目前我正在开发 Kivy 桌面应用程序,但在尝试在应用程序的标签和按钮文本中以孟加拉语显示 unicode 字符时遇到问题。每次我得到如下图所示的输出。我尝试了不同的字体,例如 SolaimanLipi.ttf、kalpurush.ttf、NikoshBAN.ttf,但仍然没有运气。我正在使用 Windows PC。相同字体的相同文本在 Kivy 之外正确显示;它在所有文本编辑器中都能正常工作,并确保我也在 Java Swing 桌面应用程序中进行了测试。
谁能描述一下是什么问题?我能做些什么来解决它?
预期输出:
程序输出:
#-- coding: utf-8 --
from kivy.base import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string("""
#:import sp kivy.metrics.sp
Label:
text: 'সকালে'
font_size: sp(50)
font_name: "SolaimanLipi.ttf"
"""))
【问题讨论】:
-
所以问题是最后两个字母被交换了,对吗?
-
或者更准确地说:它们以严格的从左到右的顺序显示。到字符串中代码点的顺序,根据正字法规则,这不是正确的位置,对吧?可能kivy的排版算法不够花哨……
-
不,取决于 unicode 字符。
-
可能你对排版算法是正确的,但是现在我该如何解决这个问题?这个问题是关于字体还是 kivy 无法呈现 unicode
-
相同的渲染规则是否适用于使用梵文脚本的其他语言? IE。是否出现相同的字形组合,例如在印地语中,如果是这样,它是否在该语言中呈现相同? (如果你能说出字形的名字,并解释渲染是如何错误的,这将对我们西方文盲有所帮助。)
标签: python unicode kivy bengali