2009-03-20 10 views

Antwort

0

Soweit ich weiß - und ich habe es selbst nicht versucht - PyGame sollte funktionieren, wenn Sie eine Unicode-Zeichenkette übergeben, die chinesische Zeichen enthält, z. du \ u4e2d \ u56fd '.

Siehe "East Asia" unter http://www.unifont.org/fontguide/ für einige geeignete Open-Lizenz-Schriften.

7

pygame verwendet SDL_ttf zum Rendern, also sollten Sie beim Rendern gut in Form sein.

unifont.org scheint einige umfangreiche Ressourcen für Open-Source-Schriftarten für eine Reihe von Skripts zu haben.

Ich packte die Cyberbit-Pan-Unicode-Schriftart und extrahiert das eingeschlossene ttf. Das folowing ‚arbeitete an meiner Maschine‘, die eine Windows Vista Home Basic und Python ist 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() 

Solange Sie nur Unicode-Text angezeigt wird, können Sie in fantastischer Form sein sollten. Wenn Sie jedoch Unicode-Eingaben vom Benutzer lesen möchten, ist die Situation viel düsterer. Pygame hat keine Eingabemethoden.

+0

Pygame _does_ haben rudimentäre Unterstützung für Ereignisse, die - wenn ich mich nicht irre - Tastenanschlagsereignisse enthält. Es ist nicht so einfach wie das Aufrufen von 'input()', aber es sollte möglich sein, UI-Eingabeelemente darüber zu erstellen. Es scheint auch Unterstützung für Ausschneiden und Einfügen über 'pygame.scrap' zu geben. – SwiftsNamesake

+0

@SwiftsNamesake, ich sage nicht, dass Pygame Eingaben nicht lesen kann; eher, ich sage, dass es keine Standardweise gibt, das Betriebssystem oder andere [Eingabemethoden] (http://en.wikipedia.org/wiki/Input_method) zu verwenden, die Zuordnungen von Sequenzen von Schlüsselcodes zu (sagen wir Unicode)) Skript für eine bestimmte Sprache. Dies betrifft hauptsächlich Eingabesprachen außer Englisch wie Chinesisch oder Arabisch. – SingleNegationElimination

+0

Ich verstehe das. Ich wollte nur klarstellen, dass es Möglichkeiten gibt, dieses Problem zu umgehen, indem Sie diese Funktionen selbst implementieren. – SwiftsNamesake