【发布时间】:2012-04-15 19:11:23
【问题描述】:
我正在尝试重新创建我的小型 python/pygame 项目以包含多种语言,而我遇到的一个问题是,由于某种原因,重音符号、波浪线等被从顶部裁剪,因此只有 1 或其中 2 个像素可见。这适用于 ie 中的大多数“重音”大写字母。法语、波兰语、西班牙语、德语等 这发生在 python 2.7.2 和 python 3.2 中,使用默认的 pygame 字体。
尝试渲染以下字符串: 'ÀÂÉÈÊËÎÏÔÙÛÜŸ'
渲染后的图像如下:
我猜,我使用的是标准渲染/位图技术:
# -*- coding: utf-8 -*-
#...
value = 'ÀÂÉÈÊËÎÏÔÙÛÜŸ'
if sys.version_info < (3, 0):
try:
val = unicode(value, "utf-8")
except UnicodeDecodeError:
val = value
text = font.render("%s" % (val), 1, font_color)
else:
val = value
text = font.render("%s" % (val), 1, font_color)
self.image.blit(text, (300,300))
#...
有人遇到过这个问题吗?任何解决方法?或者仅仅是 pygame.font.render 创建的表面太小而无法容纳顶部所需的额外空间?也许有一些方法可以设置行高,但我在任何地方都没有找到......
【问题讨论】:
-
尝试指定一种字体而不是您正在使用的字体(您使用的是默认字体吗?) - 这很可能是字体问题。
-
另外,令人高兴的是:即将到来的 Python 3.3 中的一个变化是添加回
u字符串前缀(在 Python 3 中它将是一个空操作) - 所以在 Python 2.7 和 3.3 中运行的代码不再需要在这种情况下您必须做出的解决方法 -
谢谢,将尝试指定字体。我必须让它与 Python 2.7 兼容,因为它仍然是我操作系统中的默认版本。
-
我在这里测试后将我的评论提升为答案。至于 Python 2.7,拥有它真是太好了 - 确实。
标签: python fonts rendering pygame diacritics