Allegro provee rutinas de salida de texto que funcionan tanto con fuentes proporcionales (los caracteres individuales pueden tener cualquier tamaño) como con fuentes fijas 8x8 o 8x16. Una fuente contiene los caracteres ASCII del 32 al 255: el resto de los caracteres se dibujan como espacios. El programa grabber puede crear fuentes a partir de juegos de caracteres dibujados en un fichero PCX (lee grabber.txt para más información), y también puede importar ficheros de fuentes en formato GRX o BIOS.
extern FONT *font;
Una simple fuente fija de 8x8 (del modo 13h de la BIOS). Si quiere
alterar la fuente usada por las rutinas GUI, cambie esto para que apunte
a una de sus fuentes.
void text_mode(int mode);
Ajusta el modo en el que se dibujará el texto. Si el modo es cero o
positivo, la salida de texto será opaca y el fondo de los caracteres
serán ajustados al color #mode. Si mode es negativo, el texto será
dibujado de forma transparente (es decir, el fondo de los caracteres no
será alterado). Por defecto este modo es cero.
void textout(BITMAP *bmp, FONT *f, unsigned char *s, int x, y, int color);
Escribe la cadena s en el bitmap en la posición x, y, usando el modo de
texto actual y la fuente y color especificados. Si el color es -1 y está
usando una fuente proporcional, será dibujada usando los colores del
bitmap de la fuente original (el que importaste con el programa grabber),
lo que permite salida de texto multicolor.
void textout_centre(BITMAP *bmp, FONT *f, unsigned char *s, int x, y, color);
Como textout(), pero interpreta la coordinada x como el centro y no como
el margen izquierdo de la cadena.
void textout_justify(BITMAP *bmp, FONT *f, unsigned char *s,
int x1, int x2, int y, int diff, int color);
Dibuja texto justificado dentro de la región x1-x2. Si la cantidad de
espacio reservado es mayor que el valor diff, se dará por vencido y
dibujará un texto justificado por la izquierda.
void textprintf(BITMAP *bmp, FONT *f, int x, y, color, char *fmt, ...);
Salida de texto formateada, usando un formato de cadena al estilo de
printf().
void textprintf_centre(BITMAP *bmp, FONT *f, int x, y, color, char *fmt, ...);
Como textprintf(), pero interpreta la coordenada x como el centro y no
como el margen izquierdo de la cadena.
int text_length(FONT *f, unsigned char *str);
Devuelve la longitud (en pixels) de la cadena en la fuente especificada.
int text_height(FONT *f)
Devuelve la altura (en pixels) de la fuente especificada.
void destroy_font(FONT *f);
Libera la memoria usada por una estructura de fuente.