views:

428

answers:

2

How can I display Chinese characters in PyGame? Also, what's a good free/libre font to use for this purpose?

Thanks

A: 

As far as I'm aware — and I haven't tried it myself — PyGame should Just Work when you pass it a Unicode string containing Chinese characters, eg. u'\u4e2d\u56fd'.

See ‘East Asia’ under http://www.unifont.org/fontguide/ for quite a few suitable open-licence fonts.

bobince
+2  A: 

pygame uses SDL_ttf for rendering, so you should be in fine shape as rendering goes.

unifont.org appears to have some extensive resources on Open-Source fonts for a range of scripts.

I grabbed the Cyberbit pan-unicode font and extracted the encluded ttf. The folowing 'worked on my machine' which is a Windows Vista Home Basic and 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()

As long as you're just displaying unicode text, you should be in fantastic shape. If, however, you want to actually read unicode input from the user, the situation is much more bleak. Pygame has no input methods of any sort.

TokenMacGuy