Верхняя половина текста в Pygame не отображается - PullRequest
0 голосов
/ 05 октября 2018

Я импортировал пользовательский шрифт «Celtic-Bit Thin» с веб-сайта для использования в проекте.Файл имел правильное расширение (.ttf), которое Pygame может импортировать, но при использовании отображается только нижняя половина отображаемой строки текста (Вы можете видеть только нижнюю половину каждой буквы в строке текста, отображаемой вшрифт я выбрал).Я не уверен, что это проблема со шрифтом или как я его реализовал.Я попытался:

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()

И здесь где я скачал шрифт

1 Ответ

0 голосов
/ 05 октября 2018

Я не знаю, почему шрифт обрезается, но я попытался отобразить его с помощью модуля 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...