Question

Jusqu'à présent, j'utilisé une texture (bitmapfont) pour le rendu de la police, mais je suis en train de faire fonctionner correctement freetype2. Toutes mes chaînes sont encodées SHIFT_JIS et mon seul problème est maintenant d'obtenir de freetype le glyphe droit à une séquence binaire de SHIFT_JIS approprié. Mais il semble plus difficile que prévu. Pour exemple « ? » a la charcode « 0x889F » (octet 1 est réglé sur 136 octets et 2 est 159) - qui est fonction du codage de SHIFT_JIS. Alors j'ai appelé la fonction:

FT_Select_Charmap(face, FT_ENCODING_SJIS);

et puis essayez de charger un glyphe avec cette charcode:

FT_Load_Char(face, 0x889F, FT_LOAD_RENDER ); 

Mais je reçois une glyphe au hasard. Il ne peut pas être un problème spécifique à la police, parce que j'ai essayé polices déjà différentes avec le même résultat (et oui, ils fournissent un charmap SJIS). Pour exemple « 0 » (zéro) devrait être à la position 0x0030 - mais son en fait à 0x002D. Tous les caractères ont une constante décalage de 3, sinon il n'y aurait pas de problème ... Je pense que mon appel « FT_Load_Char », passer le paramètre charcode de manière erronée - mais ne peux pas deviner comment il serait bon. Déjà essayé:

FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER ); 

Mais alors je reçois un autre glyphe aléatoire. Alors, comment puis-je passer le charcode à FT_Load_Char sinon le charmap par défaut est sélectionné?

Un conseil serait vraiment utile. Merci.

Était-ce utile?

La solution

Si quelqu'un trouvera plus tard avec un problème similaire: J'ai fini avec la conversion des codes de caractères à la volée à unicode (en utilisant icu4c). Il semble que there`sa problème avec beaucoup d'en-têtes de police SJIS japonais (ils ne peuvent pas sélectionnés par les freetype énumérations - que si vous listez tous les jeux de caractères disponibles de l'une de ces polices, puis choisissez la droite manuellement - la plate-forme ID et codant pour ID Aren « t identique pour toutes ces polices trop). Mais cela n'a pas été une bonne solution pour mes needings (car en utilisant différentes polices), donc je me suis finalement décidé d'utiliser Icu4c.

Il faut espérer que ce sera utile à quelqu'un.

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