我目前正在尝试使用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)
我正在尝试呈现的文字:
おはようございます、みんな!
编辑:经过一些测试,结果证明它是我使用的字体......沿着这些方向,有没有人知道有支持假名支持的Segoe UI Light的替代品?
答案 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))