2016-08-19 96 views
2

使用下面的代碼我想從一些語言顯示字母到一個標籤Python + kivy:如何在一個標籤(Unicode)中顯示多種語言?

這些語言是:英文,德文,日文,中文,俄文,法文,西班牙文,阿拉伯文。

我試着用一些Windows系統字體,但都不能顯示ALL字母正確。

我想知道是否有任何字體支持上述所有語言?

或者我該如何在基維中做到這一點? (有他們都在一個標籤。)

下面是代碼:

# -*- coding: utf-8 -*- 

from kivy.app import App 
#kivy.require("1.8.0") 
from kivy.uix.label import Label 
from kivy.uix.widget import Widget 

from kivy.lang import Builder 
import kivy.resources 

#kivy.resources.resource_add_path(r'/home/kivy/android/android-sdk-linux/platforms/android-18/data/fonts') 
kivy.resources.resource_add_path('C:\Windows\Fonts') 

import os.path 

Builder.load_string(''' 
<Label>: 
    font_name: 'AdobeGothicStd-Bold.otf' 

<Widgets>: 
    Label: 
     text: "ABC ÄäÜüß にほんご 中文 ру́сский язы́к ÉéÈèÊêËë Españolالعَرَبِيَّة‎ ‎français" 
     size: root.width, 75 
     pos: root.x, root.top - 150 
     font_size: 50 
     height: 75 
''') 

class Widgets(Widget): 
    def build(self): 
     return Widgets() 

class MyApp(App): 
    def build(self): 
     return Widgets() 

if __name__ == "__main__": 
    MyApp().run() 

謝謝!

+0

你得到了什麼實際輸出?是否有可能將UTF-8顯示爲MBCS? –

+0

@MarkRansom是的,我正在使用UTF-8。問題是,如果我例如正確地獲得中文,我無法正確得到阿拉伯文。如果我的德語正確,那麼日語是不正確的。我想要所有的字母都是正確的。 – Rita

+0

我再問一次,你看到了什麼*確切*如果您希望得到答案,您需要將其編輯到問題中。 –

回答

2

由於許多技術和社會原因,您不會找到涵蓋您想要定位的所有語言環境的優質單一字體。

好軟件通過編寫不同的字體來實現你想做的事情(標籤需要用目標語言環境註釋,代碼點不夠,日文和中文代碼點重疊,但不應該以相同方式呈現)。

大量的python軟件沒有國際化準備,仍然假設選擇一個特定的字體或字體文件就夠了。是的,但只在一個ascii世界。

要了解字體構成,請查看fontconfig和harfbuzz-ng。