Especificación del formato FNT

Esta sección describe el contenido de un fichero FNT. No es necesario conocer
estos detalles simplemente para programar juegos, pero serán de utilidad a
quien quiera realizar utilidades en lenguajes externos que lean o escriban
ficheros FNT.

Un fichero FNT no incluye compresión. Fenix soporta de forma transparente el
uso de compresión GZIP en los ficheros, sin necesidad de marcarlos
especialmente con extensión .gz. Normalmente un fichero FNT se guarda en disco
comprimido de esta manera, pero en el resto del fichero asumiremos que el
fichero FNT no está comprimido.

Cabecera

Un fichero FNT comienza con la siguiente cabecera:
 ____________________________________________________________________________
|Nombre____________|Tamaño_|Descripción______________________________________|
|                  |       |Cadena de caracteres de identificación del       |
|MAGIC             |3 bytes|fichero. Debe contener exactamente "fnt", en     |
|__________________|_______|minusculas.______________________________________|
|                  |       |A continuación, los cuatro bytes 1Ah, 0Dh, 0Ah y |
|                  |       |00h. Esta terminación indica, en un fichero MS-  |
|TERMINACION MS-DOS|4 bytes|DOS, final de fichero. Gracias a ella un comando |
|                  |       |TYPE en MS-DOS no mostraría los datos binarios   |
|__________________|_______|del_fichero._____________________________________|
|                  |       |Código de versión. Debido a que no se han        |
|VERSION           |1 byte |introducido cambios en el formato, este valor es |
|__________________|_______|siempre_00h._____________________________________|

Paleta de colores

A continuación aparecen 768 bytes con la paleta de colores. Cada color ocupa
tres bytes en orden RGB (rojo, verde y azul) y con un rango para cada
componente de color de 0 a 63. Seguido aparecerán 576 bytes con información
de las gamas, que podran ser ignorados en Fenix. Para mas información sobre
este punto y sobre el formato PAL en general, consulta la especificación del
formato PAL.

Flags

A continuación, inmediatamente después de la paleta, se guardan 4 que, aun
siendo totalmente ignorados tanto por DIV como por Fenix, podrian usarse para
flags.
 ____________________________________________________________________________
|Nombre|Tamaño_|Descripción__________________________________________________|
|FLAGS |4 bytes|Actualmente este dato es ignorado tanto por DIV como por     |
|______|_______|_____________________________________________________________|

Descriptores de los caracteres

Ahora siguen los descriptores de cada carácter (ASCII 256 letras), con
informacion util para interpretar los datos. Por lo tanto nos encontraremos un
array de estructuras con 256 elementos, cada uno de los cuales se corresponde
con el siguiente formato:
 _____________________________________________________________________________
|Nombre_____________________|Tamaño_|Descripción_____________________________|
|ANCHO                      |4 bytes|Ancho en píxels del gráfico del         |
|___________________________|_______|carácter._______________________________|
|ALTO_______________________|4_bytes|Alto_en_píxels_del_píxels_del_gráfico.  |
|                           |       |Este dato indica cuantos pixeles se     |
|DESPLAZAMIENTO VERTICAL    |4 bytes|desplazará verticalmente el gráfico del |
|                           |       |caracter sobre la linea base de la      |
|___________________________|_______|cadena_de_texto.________________________|
|                           |       |Este dato indica la posición de los     |
|                           |       |datos del gráfico del carácter actual   |
|                           |       |en el archivo. De esta forma podremos   |
|DESPLAZAMIENTO DE LOS DATOS|4 bytes|almacenar los gráficos sin un orden     |
|                           |       |dado, ya que podremos desplazarnos en el|
|                           |       |archivo al punto exacto donde se        |
|___________________________|_______|encuentra_cada_uno._____________________|

Datos de los gráficos

Por último, aparecen los datos de los gráficos propiamente dichos, de arriba
a abajo: Tamaño en bytes de los datos = ancho * alto

El valor 0 (índice 0 de la paleta) está reservado para los píxels
transparentes.

El orden de cada caracter en este punto puede variar. Lo usual es guardar los
datos en orden ascendente, del caracter 0 al 255, aunque esto es solo una
sugerencia. Para saber el punto exacto en el archivo donde se encuentran los
datos del gráfico de cada caracter deberemos fijarnos en el dato
"DESPLAZAMIENTO DE LOS DATOS", incluido en el descriptor de cada carácter.

Obtenido de http://fenixworld.se32.com/fenixwiki/
Disponible bajo los términos de la GNU Free Documentation License 1.2
