Python + kivy:如何在一个标签中显示多种语言(Unicode)?

Rit*_*ita 6 python unicode character-encoding kivy

使用以下代码,我想将某些语言的字母显示到一个标签中。

\n\n

这些语言是:英语、德语、日语、中文、俄语、法语、西班牙语、阿拉伯语。

\n\n

我尝试使用一些 Windows 系统字体,但它们都不能正确显示所有字母。

\n\n

我想知道是否有任何字体可以支持以上所有语言?

\n\n

或者我怎样才能在kivy中做到这一点?(将所有这些都放在一个标签中。)

\n\n

这是代码:

\n\n
# -*- coding: utf-8 -*-\n\nfrom kivy.app import App\n#kivy.require("1.8.0")\nfrom kivy.uix.label import Label\nfrom kivy.uix.widget import Widget\n\nfrom kivy.lang import Builder\nimport kivy.resources\n\n#kivy.resources.resource_add_path(r\'/home/kivy/android/android-sdk-linux/platforms/android-18/data/fonts\')\nkivy.resources.resource_add_path(\'C:\\Windows\\Fonts\')\n\nimport os.path\n\nBuilder.load_string(\'\'\'\n<Label>:\n    font_name: \'AdobeGothicStd-Bold.otf\'\n\n<Widgets>:\n    Label:\n        text: "ABC \xc3\x84\xc3\xa4\xc3\x9c\xc3\xbc\xc3\x9f \xe3\x81\xab\xe3\x81\xbb\xe3\x82\x93\xe3\x81\x94 \xe4\xb8\xad\xe6\x96\x87 \xd1\x80\xd1\x83\xcc\x81\xd1\x81\xd1\x81\xd0\xba\xd0\xb8\xd0\xb9 \xd1\x8f\xd0\xb7\xd1\x8b\xcc\x81\xd0\xba \xc3\x89\xc3\xa9\xc3\x88\xc3\xa8\xc3\x8a\xc3\xaa\xc3\x8b\xc3\xab Espa\xc3\xb1ol\xd8\xa7\xd9\x84\xd8\xb9\xd9\x8e\xd8\xb1\xd9\x8e\xd8\xa8\xd9\x90\xd9\x8a\xd9\x8e\xd9\x91\xd8\xa9\xe2\x80\x8e \xe2\x80\x8efran\xc3\xa7ais"\n        size: root.width, 75\n        pos: root.x, root.top - 150\n        font_size: 50\n        height: 75\n\'\'\')\n\nclass Widgets(Widget):\n    def build(self):\n        return Widgets()\n\nclass MyApp(App):\n    def build(self):\n        return Widgets()\n\nif __name__ == "__main__":\n    MyApp().run()\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢!

\n

nim*_*nim 3

由于许多技术和社会原因,您找不到一种高质量的字体可以覆盖您想要定位的所有区域设置。

好的软件可以通过组合不同的字体来实现您想要做的事情(并且标签需要用目标语言环境进行注释,代码点是不够的,日语和中文代码点重叠但不应该以相同的方式呈现)。

许多 python 软件还没有做好国际化准备,并且仍然假设选择特定的字体或字体文件就足够了。是的,但仅限于 ASCII 世界。

要了解字体组合,请查找 fontconfig 和 harfbuzz-ng。