2016-06-19 6 views
1

現在、pygameを使ってファイルからテキストをスクリーンに読み込もうとしています。しかし、非標準のUnicode文字(つまり、日本のhirigana)をレンダリングしようとすると、ランダムな文字とボックスの組み合わせでしか応答しません。私は見つけることができ、何も働かないものをすべて探しました。何か案は?ファイルは正しくエンコードされ、UTF-8で読み込まれるため、レンダリング段階で問題が発生します。pygameでユニコードフォントをレンダリングする

マイテキストのレンダリングコード:

def text(screen, pos, text='', font=None, color=BLACK, halign='LEFT', valign='TOP'): 
    if font == None: font = pygame.font.Font(None,16) 
    draw = font.render(text.encode('utf8'), True, color) 
    pos = list(pos) 

    if halign.upper() == 'CENTER': pos[0] -= font.size(text)[0]/2 
    if halign.upper() == 'RIGHT': pos[0] -= font.size(text)[0] 

    if valign.upper() == 'CENTER': pos[1] -= font.size(text)[1]/2 
    if valign.upper() == 'BOTTOM': pos[1] -= font.size(text)[1] 

    screen.blit(draw, pos) 

私はレンダリングしようとしているテキスト:

おはようございます、みんな! 

結果: http://imgur.com/VDctx8N

編集:いくつかのテストの後、それが判明それは私が使っていたフォントだった...これらのラインに沿って、かなをサポートしているSegoe UI Lightの代替品を知っている人はいますか? Debianでは

+1

です。 'encode()'はレンダリング用ではなく格納に適したバイナリデータを作成します。 –

+0

私は 'encode()'の有無にかかわらず同じ問題を抱えています...何が起こっているのか分かりません(削除すると結果は[this](http://imgur.com/1YKCU4B)に変わります) – tripl3dogdare

+0

今度は、文字の数が収まります。フォントがUnicodeまたはUnicodeブロックをサポートしていないようです。 –

答えて

0

、それは私がテキストをエンコードするべきではないと思い利用できるsetofont(fonts-seto

 

    font_file = pygame.font.match_font("setofont") # Select and 
    font = pygame.font.Font(font_file, 30)   # open the font 
    writing = font.render(u"おはようございます、みんな!", True, (0, 0, 0)) 

screenshot

関連する問題