使用pygame渲染unicode字体

时间:2016-06-19 23:45:20

标签: python unicode pygame

我目前正在尝试使用pygame将文件中的文本渲染到屏幕上。但是,当我尝试渲染非标准的Unicode字符(即日语hirigana)时,它只响应各种各样的随机字符和框。我搜索了我能找到的所有东西,没有任何效果。有任何想法吗?该文件已正确编码并以UTF-8读取,因此问题出在渲染阶段。

我的文字渲染代码:

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的替代品?

1 个答案:

答案 0 :(得分:1)

在Debian上,它可以使用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