我试图用pygame绘制西里尔字符时得到正方形

时间:2017-11-10 08:33:55

标签: python python-2.7 pygame cyrillic

我正在使用Python 2.7和Pygame(使用Anaconda)开发应用程序。在应用程序中,我正在尝试用西里尔字符绘制文本,它永远不会显示正确。我知道这可能是一个编码问题,所以我将这一行包含在脚本的顶部:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

...然后我在每个字符串前面加上一个'u'。这有帮助,但只是部分 - 现在,而不是错误的字符我得到正方形!

有趣的是控制台打印出一切都很好。

为什么会发生这种情况,我该如何解决?

2 个答案:

答案 0 :(得分:1)

这可能是因为您用于渲染文本的字体缺少西里尔字符。尝试找到100%西里尔文字体,然后按以下方式渲染文字:

my_font = pygame.font.Font("path/to/cyrillic_font.ttf", 12)
text_surface = my_font.render(u"Текст", True, (255, 255, 255))

答案 1 :(得分:0)

好的,事实证明它确实是一个字体问题。我没有意识到我用于测试的字体不支持西里尔字符。 仅供记录:即使使用正确的字体,您也需要包含“' u'在你走过的每根弦前面。另外,如果你要组合两个或多个字符串,每个字符串都需要' u'或者你会得到一个ASCII错误(" smt就像can'转换字符"。 谢谢大家!