问题:大写字母时,我无法在德语文本中显示变音符号('Umlaut points')。
我想显示一个类似'Übung'
的单词(英语中的Practice / Exercise。),但是顶部被切断,导致两个点没有显示,而是显示为“ Ubung”。
由于小写字母'ü'
确实获得了display属性,因此无法进行编码。尝试显示'Üü'
时会显示“Uü”。
我有第17章“用Python发明自己的计算机游戏”中的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()
OS:MacOS 10.14.4 尝试使用的字体:系统字体(无),“ Palatino”,“ helveticattc”,“ comicsansmsttf”。
奇怪的是,当我在PyCharm中运行此代码时,ComicSans('comicsansmsttf')将呈现Ü,但Helvetica和Palatino不会显示点。
答案 0 :(得分:2)
问题不是文本的for ()
。 rect
自动设置表面尺寸,绝不会切割部分字母。
默认的pygame字体(当您将pygame.font.Font.render()
传递给None
时使用的字体)可能不支持大写字母的字符分解。
尝试传递其他字体,例如Arial或Times New Roman。
SysFont
我尝试过Arial和Times New Roman。两者都在大写字母上显示二分体,但是您当然可以选择另一种,只要它已安装在系统上即可。
有关更多信息:
basicFont = pygame.font.SysFont("Arial", 48)
告诉您哪种是默认的pygame字体。pygame.font.get_default_font()
返回可用于pygame的字体列表。