2

目前我正在开发 Kivy 桌面应用程序,但在我的应用程序的标签和按钮文本中尝试以孟加拉语显示 unicode 字符时遇到问题。每次我得到如下图所示的输出。我尝试了不同的字体,例如 SolaimanLipi.ttf、kalpurush.ttf、NikoshBAN.ttf,但仍然没有运气。我正在使用 Windows PC。相同字体的相同文本在 Kivy 之外正确显示;它在所有文本编辑器中都能正常工作,并确保我也在 Java Swing 桌面应用程序中进行了测试。

任何人都可以描述是什么问题吗?我能做些什么来解决它?

预期输出:

正确呈现 sakālē

程序输出:

不正确的渲染

        #-- 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"    
        """))
4

2 回答 2

0

Kivy 中有一个自 2014 年以来一直开放的错误(!) - https://github.com/kivy/kivy/issues/2669

在我能理解讨论和当前状态的情况下,开发人员仍在寻找解决方案。

泰米尔语等语言需要重塑,我们当前的供应商不支持这一过程。我正在开发一个新的文本提供程序,使用 Pango 作为在 Linux(可能还有 OSX)上提供这种支持的选项。

-- 2014年放弃

这(从 2017 年开始)似乎也很相关,但也隐约陈旧:https ://github.com/kivy/kivy/issues/4902

于 2020-07-23T10:08:12.793 回答
0

Unicode 文本可以转换为 Bijoy (ANSI) 文本,并且可以在 Kivy 中通过使用如下[font]标记轻松使用:

text = "[font=font/SutonnyMJ]Avwg evsjvq K_v ewj[/font] means I speak Bangla"

这个 repo提供了与 Kivy 中的 Unicode 到 Bijoy (ANSI) 转换相关的代码和说明。这不是一个完美的解决方案,但大多数应用程序都能满足他们的需求。

于 2020-12-25T14:32:23.687 回答