pygame中的文本的上半部分没有显示

时间:2018-10-05 04:10:31

标签: python pygame

我从网站上导入了一种自定义字体“ Celtic-Bit Thin”,以用于项目中。该文件具有pygame可以导入的正确扩展名(.ttf),但在使用时,仅显示显示的文本字符串的下半部分(您只能看到显示在文本字符串中的每个字母的下半部分)。我选择的字体)。我不确定字体或实现方式是否有问题。我尝试过:

gameFont = pygame.font.Sysfont("Celtic-Bit Thin", 24)
font.render("Hello world!", False, (0,0,0))

我也尝试用pygame.font.Font()来做,但是那也不起作用。字体是否仅仅是与pygame不兼容,还是导入字体还有其他要求?

编辑:这是一个最小的可运行示例:

import pygame

pygame.init()
pygame.font.init()

screen = pygame.display.set_mode((800,600))

gameFont = pygame.font.SysFont("Celtic-Bit Thin", 36)

running =  True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            runnung = False

    screen.fill((255,255,255))
    screen.blit(gameFont.render("Hello World!",False,(0,0,0)), (300, 300))
    pygame.display.flip()
pygame.quit()

AND here是我下载字体的地方

1 个答案:

答案 0 :(得分:0)

我不知道为什么要剪掉字体,但是我尝试使用pygame.freetype模块而不是pygame.font来呈现它,并且效果很好。

import pygame
import pygame.freetype  # Import the freetype module.


pygame.init()
screen = pygame.display.set_mode((800,600))
gameFont = pygame.freetype.SysFont("Celtic-Bit Thin", 24)
running =  True

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((255,255,255))
    # You can use `render` ...
    text_surface, rect = gameFont.render("Hello World!", (0,0,0))
    screen.blit(text_surface, (40, 250))
    # or `render_to`.
    gameFont.render_to(screen, (40, 350), "Hello World!", (0,0,0))

    pygame.display.flip()

pygame.quit()