Iniciar sesión

Ver la versión completa : Mostrar caracteres con SDL_TTF



saboteur
06/01/2009, 18:15
Estoy haciendo un nuevo juego para Windows y GP2X. Lo tengo casi listo, pero hay un problema que no sé cómo solucionar. Al mostrar líneas de texto con "ñ" (por ejemplo), en GP2X no se muestran correctamente, pero en Windows sí.
Aquí va un ejemplo con la selección de idioma (la palabra "ESPAÑOL"):
http://www.arrakis.es/~saboteur/temp/text-win-gp2x.png

¿Alguien tiene una idea de por dónde van los tiros o cómo arreglarlo?
Mi otra solución es quitar tildes, acentos y todo eso... pero no quiero eliminar un símbolo tan patriótico. :D

PD: ¡No! No voy a utilizar bitmaps.

civantoz
06/01/2009, 18:35
Pues no se mucho de SDL pero por el garabato que sale... o bien la fuente truetype que usas en GP2X no tiene caracteres especiales (ñ, tildes, simbolos...), o bien hay que indicar el tipo de codificacion para los caracteres que estas usando, indicar si es utf-8, iso... pero ya te digo que no lo se seguro, así que no te puedo orientar mucho con las funciones de SDL, pero si tienes la referencia por ahi a mano busca funciones relacionadas con el texto y la codificacion a ver que sale por ahi...

saludos

hardyx
06/01/2009, 19:09
Es la codificación, windows usa Ansi y la consola posiblemente UTF-8 o lo que tengas configurado. Mira en settings y pon el charset iso europeo. No me acuerdo el número ahora.

saboteur
06/01/2009, 21:43
Vale, ya lo tengo. Lo he arreglado en programación:

En GP2X hay que utilizar:
TTF_RenderUTF8_Blended(...)

mientras que en Windows es:
TTF_RenderText_Blended(...)

...se me han acabado las pilas justo cuando lo estaba probando, pero salía la "ñ". :D

Gracias por la pista. ;)

< - >
Editado:
¡Nada, retiro lo dicho! La "Ñ" la muestra bien, pero las tildes no. De la otra forma, muestra las tildes y la "Ñ" no. Así que:
A) encuentro una solución y lo arreglo
B) sacrifico la "Ñ" o las tildes
C) to en inglés...

civantoz
06/01/2009, 21:56
de todas formas puede seguir siendo factible lo que te dije antes... ¿ estas seguro que esa fuente incluye los simbolos especiales? no tienen por que llevarlos :) si la que estas usando para windows si los tiene copia ese mismo fichero y haz las pruebas con el para salir de dudas... sino ya no se me ocurren muchas mas historias, a ver si viene alguien que controle SDL a fondo :D

saludos!

saboteur
06/01/2009, 22:04
Sí, la fuente es la misma. El proyecto de windows y el de gp2x utilizan los mismos archivos, y la fuente "arial.ttf" es común para los dos.
Lo que está claro es que es algo de la codificación, pero no sé cómo solucionarlo. Imagino que acabaré quitando la "Ñ" si no encuentro la manera... o eso, o nos olvidamos de la versión de gp2x, pero es que me ha quedado demasiado chulo... :lovegp2x:

civantoz
06/01/2009, 22:51
supongo que debe haber una solucion razonable... sino siempre puedes hacer ficheros para los textos diferentes y que segun el makefile se usen los de una codificacion con las funciones normales para todas las plataformas que usan iso, y otro con las funciones ttf con los textos para utf-8, si seperas así los textos tambien puede ser una facilidad para que puedas (o te puedan) traducir el juego a otros idiomas :D

saludos

saboteur
06/01/2009, 23:27
Bua.... ya está solucionada la estupidez.
Resulta que tengo una clase que me lee todos los textos del juegos según el idioma seleccionado. Añadir idiomas es tan sencillo como añadir un nuevo archivo traducido.

Resulta que dentro del archivo una linea indica el nombre del idioma:
@lang Español
o
@lang English

Y por supuesto, los nombres de los archivos se llaman igual que el idioma, aunque no es en absoluto necesario.
Pues resulta que en lugar de mostrar en pantalla el nombre que se indica dentro del archivo de idioma (que es lo que había que mostrar), mostraba el nombre del archivo, que está en otra codificación distinta. :lamer:

Ahora está arreglado. Con esta clase puedo tener tantos idiomas como quiera, y el cambio de lengua se hace "al vuelo" con efecto inmediato.

Pero bueno... eso ya lo veréis en su momento... [wei5]