Question

Je suis actuellement leçon tutoriel NeHe 43 ( http: // nehe.gamedev.net/data/lessons/lesson.asp?lesson=43 ). Le code fonctionne de façon satisfaisante que pour le texte anglais, langues non unicode. Heureusement, je suis un lien de la leçon NeHe 43 http: //www.cs. northwestern.edu/~sco590/fonts_tutorial.html et a trouvé un autre échantillon de tutoriel identique avec une seule différence:. il utilise w_char, et le site affirme que vous pouvez exécuter sur une langue autre que l'anglais

Je donne donc un essai:

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

la fonction Imprimer de namespace freetype a le 4ème argument * const unsigned short ** donc je typecasted il. J'ai aussi mis un L en face de la double chaîne entre guillemets pour caractères et mis dans certains caractères asiatiques pour des fins de test.

Le résultat est tout le texte anglais peut afficher très bien, mais tous les caractères thaïs deviennent « [] B [] I [] 5H [] 8 ». Le [] sont des boîtes carrées. D'après ce que je comprends, cela implique que la police n'a pas la langue spécifiée, alors j'ai essayé d'autres polices, mais toutes les autres polices thaïlandaises donner ces mêmes boîtes carrées. Pour la police japonaise, il est le même. Toutes les boîtes avec quelques caractères anglais à côté d'eux. Le öáæé substring est rendue très bien sans aucun problème.

Suis-je oublie quelque chose ici? Comment peut-on afficher la langue non-anglais Unicode ici?

Était-ce utile?

La solution

Heureusement, l'auteur a téléchargé une version modifiée de son tutoriel sur son site (indiqué dans la question) et il utilise wchar_t (dans la version originale, l'auteur utilise * const unsigned short ** comme argument dans la fonction d'impression ), qui permet à des langues non anglais.

Autres conseils

Il ressemble à l'impression () dans la leçon 43 est même pas près Unicode capable. Tout NeHe fait crée 256 listes d'affichage pour les 256 premiers caractères ASCII, ne pas accepter une chaîne UTF8 et la convertir en UTF32 pour FreeType.

cette en C ++ a bien fonctionné pour moi.

En outre, récupérer une copie de la GNU Unifont pour vous assurer que vous avez Glyphes pour tous les BMP .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top