Come posso visualizzare i caratteri cinesi in PyGame? E qual è un buon font gratuito/libre da utilizzare per questo scopo?Caratteri Unicode in PyGame
risposta
Per quanto ne so, e non l'ho ancora provato, PyGame dovrebbe funzionare solo quando si passa una stringa Unicode contenente caratteri cinesi, ad es. u '\ u4e2d \ u56fd'.
Vedere "Asia orientale" sotto http://www.unifont.org/fontguide/ per alcuni tipi di carattere a licenza aperta.
pygame utilizza SDL_ttf per il rendering, quindi si dovrebbe essere in forma fine come il rendering va.
unifont.org sembra avere alcune risorse estese sui caratteri Open-Source per una serie di script.
Ho afferrato il carattere di pan-unicode Cyberbit ed estratto il file ttf incluso. Il folowing 'lavorato sulla mia macchina', che è un Windows Vista Home Basic e 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()
Finché si sta solo la visualizzazione del testo Unicode, si dovrebbe essere in forma fantastica. Se, tuttavia, si desidera effettivamente leggere l'input unicode dall'utente, la situazione è molto più desolante. Pygame non ha metodi di input di alcun tipo.
Pygame _segue_ ha un supporto rudimentale per gli eventi che, se non erro, includono eventi di ictus chiave. Non è così semplice come chiamare 'input()', ma dovrebbe essere possibile costruire elementi di input dell'interfaccia utente. Sembra anche che ci sia il supporto per tagliare e incollare tramite 'pygame.scrap'. – SwiftsNamesake
@SwiftsNamesake, non sto dicendo che pygame non possa leggere input; piuttosto, sto dicendo che non ha un modo standard di usare il sistema operativo o altri [metodi di input] (http://en.wikipedia.org/wiki/Input_method), i mapping da sequenze di codici chiave a (per esempio, unicode) script per una lingua specifica. Questa è una preoccupazione principalmente per le lingue di input diverse dall'inglese, come il cinese o l'arabo. – SingleNegationElimination
Lo capisco. Volevo solo chiarire che ci sono modi per aggirare questo problema implementando le funzionalità di te stesso. – SwiftsNamesake