【问题标题】:I'm getting squares when trying to draw cyrillic characters with pygame尝试使用 pygame 绘制西里尔字符时出现正方形
【发布时间】:2017-11-10 08:33:55
【问题描述】:

我正在使用 Python 2.7 和 Pygame(使用 Anaconda)开发一个应用程序。在应用程序中,我试图用西里尔字符绘制文本,但它永远无法正确显示。我知道这可能是一个编码问题,所以我在脚本顶部添加了这一行:

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

...然后我在我传递的每个字符串前面都包含一个'u'。这有所帮助,但只是部分帮助 - 现在,我得到的不是错误的字符!

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

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

【问题讨论】:

  • 您能否在问题中包含一些示例字符?我想试试这个,但我不知道什么样的字符可能会导致这个。
  • 你用来渲染文本的字体,是否支持西里尔字符?
  • 我使用了几种字体,包括 Times New Roman。据我所知,至少 TNR 应该支持西里尔字符......例如,试试这个词:“разходка”

标签: python python-2.7 pygame cyrillic


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    好的,结果确实是字体问题。我没有意识到我正在使用一种不支持西里尔字符的字体进行测试。 仅作记录:即使使用正确的字体,您也需要在您传递的每个字符串前面包含“u”。此外,如果您要组合两个或多个字符串,每个字符串都需要 'u',否则您会收到 ASCII 错误(“smt like can't convert character”。 谢谢大家!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      相关资源
      最近更新 更多