Юникод шрифты в PyGame - PullRequest
8 голосов
/ 21 марта 2009

Как я могу отображать китайские иероглифы в PyGame? И какой хороший шрифт free / libre использовать для этой цели?

Ответы [ 2 ]

7 голосов
/ 21 марта 2009

pygame использует SDL_ttf для рендеринга, так что вы должны быть в хорошей форме при рендеринге.

unifont.org обладает обширными ресурсами шрифтов с открытым исходным кодом для различных сценариев.

Я схватил шрифт Cyberbit pan-unicode и извлек включенный ттф. Следующее «работает на моей машине», которое является Windows Vista Home Basic и Python 2.6:

# -*- coding: utf-8 -*-

import pygame, sys


unistr = u"黒澤 明"
pygame.font.init()
srf = pygame.display.set_mode((640,480))
f = pygame.font.Font("Cyberbit.ttf",20)
srf.blit(f.render(unistr,True,(0,0,0)),(0,0))
pygame.display.flip()

while True:
    srf.blit(f.render(unistr,True,(255,255,255)),(0,0))
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

Пока вы просто отображаете текст в юникоде, вы должны быть в фантастической форме. Однако, если вы действительно хотите прочитать ввод Unicode от пользователя, ситуация гораздо более мрачная. Pygame не имеет никаких методов ввода.

0 голосов
/ 21 марта 2009

Насколько я знаю - и я сам не пробовал - PyGame должен просто работать, когда вы передаете ему строку Unicode, содержащую китайские символы, например. и '\ u4e2d \ u56fd'.

См. "Восточная Азия" в разделе http://www.unifont.org/fontguide/, где приведено довольно много подходящих шрифтов с открытой лицензией.

...