Domanda

Al momento sto seguendo NeHe lezione tutorial di 43 ( http: // nehe.gamedev.net/data/lessons/lesson.asp?lesson=43 ). Il codice funziona in modo soddisfacente solo per il testo inglese, le lingue non in Unicode. Fortunatamente, seguo un link da NeHe lezione 43 a http: //www.cs. northwestern.edu/~sco590/fonts_tutorial.html e ha trovato un altro campione dimostrativi identico con una sola differenza:. utilizza w_char, e il sito sostiene che è possibile eseguire su una lingua diversa dall'inglese

Quindi fare un tentativo:

freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1);

la funzione Stampa di namespace freetype ha il quarto argomento come * const unsigned short ** così ho typecasted esso. Ho anche messo una L di fronte alla stringa di doppia quotato per caratteri e mettere in alcuni caratteri asiatici per testare scopo.

Il risultato è tutto il testo inglese può visualizzare bene, ma tutti i caratteri tailandesi diventano "[] B [] I [] 5H [] 8". Il [] sono caselle quadrate. Da quello che ho capito, ciò implica che il carattere non ha la lingua specificata, così ho provato altri tipi di carattere, ma tutti gli altri tipi di carattere thailandesi dare queste stesse caselle quadrate. Per il tipo di carattere giapponese, è lo stesso. Tutte le scatole insieme ad alcuni caratteri inglesi accanto a loro. Il öáæé sottostringa viene reso bene senza alcun problema.

Sto dimenticando qualcosa qui? Come possiamo visualizzare non in lingua inglese Unicode qui?

È stato utile?

Soluzione

Per fortuna, l'autore ha caricato una versione modificata del suo tutorial nel suo sito web (indicato nella domanda) e utilizza wchar_t (nella versione originale, l'autore utilizza * const unsigned short ** come argomento nella funzione di stampa ), che permette di lingue diverse dall'inglese.

Altri suggerimenti

Si presenta come print () nella lezione 43 non è nemmeno da nessuna parte vicino Unicode capace. Tutti NeHe sta facendo è la creazione di 256 liste di visualizzazione per i primi 256 caratteri ASCII, non accettando una stringa UTF8 e convertirlo in UTF-32 per FreeType.

questo in C ++ ha funzionato abbastanza bene per me.

Inoltre, prendere una copia della GNU Unifont per assicurarsi di avere i glifi per tutto il BMP .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top