Fonts 在Pygame中,文本在顶部使用特定字体进行裁剪

Fonts 在Pygame中,文本在顶部使用特定字体进行裁剪,fonts,pygame,Fonts,Pygame,我正在Pygame中制作一个神奇宝贝风格的对话框。我使用的是字体,但由于某种原因,文本在顶部被裁剪。看起来pygame.font.font.size无法正确计算渲染文本所需的Surface大小。 显示它应该是什么样子 导入pygame pygame.init() window=pygame.display.set_模式((640192)) 窗口填充((255,255,255)) POKEFONT=pygame.font.font(“口袋妖怪GB.ttf”,32) 位置=[[32,64],[36

我正在Pygame中制作一个神奇宝贝风格的对话框。我使用的是字体,但由于某种原因,文本在顶部被裁剪。看起来
pygame.font.font.size
无法正确计算渲染文本所需的
Surface
大小。

显示它应该是什么样子

导入pygame
pygame.init()
window=pygame.display.set_模式((640192))
窗口填充((255,255,255))
POKEFONT=pygame.font.font(“口袋妖怪GB.ttf”,32)
位置=[[32,64],[36,128]]
lines=[“你好!”,“欢迎来到”]
对于拉链中的线、位置(线、位置):
text=POKEFONT.render(line,True,(0,0,0))
rect=text.get_rect()
rect.topleft=pos
blit(文本,矩形)
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出()
pygame.display.update()

字体看起来几乎相同,但渲染正确。发生了什么?

解决方案是使用pygame.freetype,它从pygame 1.9.2开始提供

PKMN RBYGSC位于左侧,口袋妖怪GB位于右侧。感叹号穿过口袋妖怪GB中的最大上升线和基线(有关术语,请参阅)。看起来像是
pygame.font
忽略了那些行之外的任何内容,但是
pygame.freetype
没有

此代码的修改版本提供了正确的结果:

import pygame.freetype
pygame.init()
window=pygame.display.set_模式((640192))
窗口填充((255,255,255))
POKEFONT=pygame.freetype.Font(“口袋妖怪GB.ttf”,32)
位置=[[32,64],[36,128]]
lines=[“你好!”,“欢迎来到”]
对于拉链中的线、位置(线、位置):
text,rect=POKEFONT.render(行,(0,0,0))
rect.topleft=pos
blit(文本,矩形)
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出()
pygame.display.update()