PyGame中的Unicode字体

8 python unicode pygame cjk

如何在PyGame中显示中文字符?什么是一个很好的免费/自由字体用于此目的?

Sin*_*ion 7

pygame使用SDL_ttf进行渲染,因此渲染时应该处于良好状态.

unifont.org似乎在一系列脚本的开源字体上有一些广泛的资源.

我抓住了Cyber​​bit pan-unicode字体并提取了包含的ttf.下面的'在我的机器上工作'是一个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()
Run Code Online (Sandbox Code Playgroud)

只要你只显示unicode文本,你应该处于梦幻般的状态.但是,如果您想要实际读取用户的unicode输入,情况会更加黯淡.Pygame没有任何类型的输入方法.


bob*_*nce 0

据我所知\xe2\x80\x89\xe2\x80\x94\xe2\x80\x89我自己还没有尝试过\xe2\x80\x89\xe2\x80\x94\xe2\x80当你向它传递一个包含中文字符的 Unicode 字符串时, \x89PyGame 应该可以正常工作,例如。u\'\\u4e2d\\u56fd\'。

\n\n

请参阅http://www.unifont.org/fontguide/下的 \xe2\x80\x98East Asia\xe2\x80\x99以获得相当多合适的开放许可字体。

\n