Acentos y Ñ no aparecen en el FNT

Started by Arcontus, August 20, 2013, 10:27:29 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Arcontus

Tengo problemas con los FNT al representar acentos y "ñ", si no cargo un FNT se ven correctamente pero al cargarlo es como si la codificacion fuera distinta.
He utilizado la busqueda en el foro y he visto que no soy el primero con este problema, y necesito encontrar alguna solución, pero de momento no se me ocurre como hacerlo.
¿Alguien que lo haya solucionado podría explicar como?

Gracias por adelantado.

5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

DCelso

abre tu fnt con un editor de fnts, por ejemplo fnt editor 4.0.
mira la posición de los acentos y la ñ en él.

si corresponden a las posiciones de estas que te voy a poner (http://es.wikipedia.org/wiki/ISO_8859-1) es codificación iso_8859 por lo que en la información de cabecera de tu fnt debes de tener character encoding  iso_8859. Si no es así tienes mal creado tu .fnt.

si no corresponden a esas posiciones entonces es cp850 (http://es.wikipedia.org/wiki/P%C3%A1gina_de_c%C3%B3digos_850) en la información de tu .fnt debe de poner eso, si no pone cp850 entonces es que está mal creado tu .fnt

Ahora bien, tienes que ver qué codificación estás usando para escribir tu .prg (Si usas windows y el notepad, y se te ven bien los acentos y las ñs entonces estás usando iso_8859)  deberías de usar el fnt en esa mismo iso.

Si usas por ejemplo la consola de comandos y edit y ves bien los caracteres ñ y acentos, quiere decir que estás usando cp850, deberías usar un fnt en este cp.

Si  usas otro editor probablemente tenga opción para decirte qué codificación estás usando en el .prg

si usas linux, posiblemente estés usando o unicode o utf-8, aquí la hemos cagado un poco, bennu actualmente no soporta esta codificación de caracteres.
Pero hay una piñuela o chapucilla para sacar los 256 caracteres primeros de cada char encoding mencionado que es la siguiente:
Creas tu .fnt basándote en los  256 primeros caracteres unicode o utf-8 , por ejemplo, http://doc.infosnel.nl/extreme_utf-8.html
Luego guardas tu fnt como si fuera cp850 (es decir en la info del .fnt dices que es cp850 pero en realidad tienes caracteres utf8 en sus imágenes y posiciones)

Ahora puedes usar tu .prg en utf-8 y usar ese fnt, que internamente engañas a bennu y se cree que es cp850 (y no transcribe posiciones) por lo que busca la posición correcta utf8 en tu fnt.

Este mismo truco rápido se puede usar para cualquier otra codificación, pudiendo conseguir así usar bennu con cualquier codifiación de ficheros .prg.


Y el truco, trucacaco, es crearte tu propia codificación y saber la tabla de conversión (entre la codificación de tu .prg y tu tabla inventada por ejemplo en la posición de la h de cp850 dibujar el ala de una nave), y así poder mezclar las 256 letras o imágenes que quieras y hacer cosas tan raras como hacer write (mifontrara,"hhhrriii") y dibujar una nave "<<<-->>>" por ejemplo :D


Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Arcontus

Ostras DCelso, tu respuesta es muy buena (y rápida) karma++.

Pero me abre nuevas preguntas:
¿Como se mira la codificacion en el fnt editor 4.0 y como se puede cambiar?

Estoy utilizando bennu como interfaz de entrada de datos (teclas) y uso la funcion ascii para revisar la tecla pulsada.
¿Esto significa que utilizo cp850 como entrada de datos y iso_8859 en las fuentes?
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

DCelso

Quote from: Arcontus on August 21, 2013, 02:58:39 PM
Ostras DCelso, tu respuesta es muy buena (y rápida) karma++.

Pero me abre nuevas preguntas:
¿Como se mira la codificacion en el fnt editor 4.0 y como se puede cambiar?
No recuerdo exactamente pero  creo recordar que si te vas al generador de fnts, abres el fnt y le das a ver información del fnt, se abre una ventana donde puedes ver los datos de la cabecera del fnt. Pero no se pueden modificar.
Quote from: Arcontus on August 21, 2013, 02:58:39 PM
Estoy utilizando bennu como interfaz de entrada de datos (teclas) y uso la funcion ascii para revisar la tecla pulsada.
¿Esto significa que utilizo cp850 como entrada de datos y iso_8859 en las fuentes?
Muy probable, sí.  para probarlo escribe una ñ y mira qué carácter te sale, búscalo en el fnt cargado, quédate con la posición de ese carácter y mira si esa posición es la correpondiente a la ñ en el cp850
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Arcontus

Bien, ya tengo el tema funcionando. Lo he solventado sobreescribiendo según el código ASCII recibido al correspondiente en la codificación FNT.
Si alguien tiene el mismo problema, le puedo pasar mi código sin problemas.

Gracias por la ayuda :)
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com