Python 3.x 有没有办法更改字体对象的rect属性?

Python 3.x 有没有办法更改字体对象的rect属性?,python-3.x,pygame,Python 3.x,Pygame,问题是:我无法在德语文本中显示大写的变音符号(“Umlaut points”) 我想显示一个像“Übung”(英语练习/练习)这样的单词,但是顶部被切断,导致两个点没有显示,而是显示为“Ubung” 它不能是编码,因为小写字母“ü”不会显示属性。尝试显示“Üü”结果为“Uü” 我有来自《用Python发明你自己的电脑游戏》第17章的MWE import pygame from pygame.locals import * # Set up pygame. pygame.init() # Se

问题是:我无法在德语文本中显示大写的变音符号(“Umlaut points”)

我想显示一个像“Übung”(英语练习/练习)这样的单词,但是顶部被切断,导致两个点没有显示,而是显示为“Ubung”

它不能是编码,因为小写字母
“ü”
不会显示属性。尝试显示
“Üü”
结果为“Uü”

我有来自《用Python发明你自己的电脑游戏》第17章的MWE

import pygame
from pygame.locals import *

# Set up pygame.
pygame.init()

# Set up the window.
windowSurface = pygame.display.set_mode((500, 400), 0, 32)
pygame.display.set_caption('Hello world!')

# Set up the colors.
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

# Set up the fonts.
basicFont = pygame.font.SysFont(None, 48)

# Set up the text.
text = basicFont.render('Hello Übungswörld!', True, GREEN, BLUE)
textRect = text.get_rect()
textRect.centerx = windowSurface.get_rect().centerx
textRect.centery = windowSurface.get_rect().centery

# Draw the white background onto the surface.
windowSurface.fill(WHITE)

# Get a pixel array of the surface.
pixArray = pygame.PixelArray(windowSurface)
pixArray[480][380] = BLACK
del pixArray

# Draw the text onto the surface.
windowSurface.blit(text, textRect)

# Draw the window onto the screen.
pygame.display.update()

# Run the game loop.
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
操作系统:MacOS 10.14.4 尝试的字体:系统字体(无)、“Palatino”、“Helveticatc”、“comicsansmsttf”


奇怪的是,当我在PyCharm中运行此代码时,ComicSans(“comicsansmsttf”)将呈现Ü,但Helvetica和Palatino不会显示点。

问题不在于文本的
rect
pygame.font.font.render()
自动设置曲面大小,不会剪切部分字母

默认的pygame字体(将
None
传递给
SysFont
时使用的字体)可能不支持大写字母的dieresis

尝试传递不同的字体,如Arial或Times New Roman

basicFont = pygame.font.SysFont("Arial", 48)
我试过使用Arial和Times New Roman。两者都在大写字母上显示dieresis,但您当然可以选择另一个,只要它安装在您的系统上

有关更多信息:

  • pygame.font.get\u default\u font()
    告诉您哪个是默认的pygame字体
  • pygame.font.get_font()
    返回可用于pygame的字体列表

可用于添加您正在使用的操作系统。您使用的是系统的默认字体,可能该字体不支持大写字母。不确定是否有帮助,但可能值得一看:如果您认为问题在于点是从矩形中切掉的,那么这个问题将讨论字体的垂直对齐。您是对的–并非所有字体都有效。另一个问题是,我一直在Pycharm中运行我的MWE,而我在Idle中处理的实际代码。谢谢