Python 使用pygame呈现unicode字体

Python 使用pygame呈现unicode字体,python,unicode,pygame,Python,Unicode,Pygame,我目前正在尝试使用pygame将从文件读取的文本呈现到屏幕上。但是,当我尝试呈现非标准Unicode字符(即日语平假名)时,它只会以各种随机字符和框进行响应。我找遍了所有我能找到的东西,但什么也没找到。有什么想法吗?文件以UTF-8正确编码和读取,因此问题出现在渲染阶段 我的文本呈现代码: def text(screen, pos, text='', font=None, color=BLACK, halign='LEFT', valign='TOP'): if font == None

我目前正在尝试使用pygame将从文件读取的文本呈现到屏幕上。但是,当我尝试呈现非标准Unicode字符(即日语平假名)时,它只会以各种随机字符和框进行响应。我找遍了所有我能找到的东西,但什么也没找到。有什么想法吗?文件以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)
我试图呈现的文本:

おはようございます、みんな!
结果是:


编辑:经过一些测试,结果证明这是我使用的字体。。。在这些方面,有人知道有没有一种支持假名的Segoe UI Light替代品吗?

在Debian上,可以使用setofont字体seto


我想文本不应该被编码。encode创建适合存储的二进制数据,而不是用于渲染。我有同样的问题,无论是否使用“encode”。。。我不知道发生了什么,虽然删除它确实会改变结果,至少现在的字符数适合。该字体似乎不支持Unicode或该Unicode块。同样,已选中。字体确实支持精确的字符。。。我被难住了。draw=font.render'おはようございます、みんな!', 正确,颜色编号编码为@KlausD。我已经说过了。From font.render reference:接受Unicode和字符字节字符串 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))