font-gen
Generador de fuentes bitmap (.gif + .fnt) desde TrueType, pensado para
motores de juego con sistema de texto indexado por paleta.
El GIF de salida usa una paleta de 2 colores: índice 0 = fondo, índice 1
= glifo. El .fnt acompañante registra el ancho visual real (medido en
píxeles) de cada caracter.
Procesa 124 caracteres: ASCII 32–126 más extensiones para castellano,
catalán y valenciano (ÀÁÈÉÌÍÒÓÙÚÑÇ y minúsculas, ¡¿«»·).
Instalación
En Debian/Ubuntu, todo via apt en una sola línea (recomendado):
sudo apt install python3-tk python3-pil python3-pil.imagetk
python3-piles Pillow (no en PyPI con ese nombre).python3-pil.imagetkes el bridge PIL ↔ Tk que la GUI usa para el preview.python3-tkes tkinter; no se puede instalar con pip ni un venv lo soluciona, porque es un binding C que vive en la stdlib del sistema.
Alternativa con pip (Pillow en venv, tkinter sigue siendo apt):
sudo apt install python3-tk
pip install -r requirements.txt # o: pip install Pillow
Opcional: tener imagemagick (binario magick) en el PATH para que el
GIF se reduzca a una paleta estricta de 2 colores tras guardarlo. Si no
está, el script funciona igualmente.
Uso
GUI
python3 font_gen.py # sin argumentos abre la interfaz Tk
python3 font_gen.py --gui # explícito
Selecciona un TTF, ajusta el tamaño y pulsa GENERAR. Los ficheros
.gif y .fnt se escriben junto a font_gen.py. El preview se
actualiza en vivo mostrando la cuadrícula completa de caracteres.
Las opciones avanzadas (columns, box_width, box_height) están
ocultas por defecto; ábrelas si necesitas tamaños de celda fijos —
útil para fuentes de pixel-art donde el TTF tiene un bitmap strike
exacto.
CLI
Desde TTF:
python3 font_gen.py --ttf myfont.ttf --size 8 --output myfont
python3 font_gen.py --ttf myfont.ttf --size 8 --output myfont --box-width 8
python3 font_gen.py --ttf myfont.ttf --size 16 --output myfont --dir ./out
Desde un GIF de fuente existente con cuadrícula (regenera el .fnt
midiendo anchos desde los píxeles, sin re-rasterizar):
python3 font_gen.py --gif myfont.gif --output myfont \
--columns 16 --box-width 10 --box-height 7 --cell-spacing 1
Lista completa de opciones: python3 font_gen.py --help.
Cómo se eligen los caracteres
- Glifo nativo: si el TTF tiene el caracter en su
cmap, se dibuja tal cual. - Fallback ASCII: si no, y el caracter está en la tabla de fallbacks
(
Á → A,ñ → n, …), se dibuja la versión ASCII en la celda pero el.fntregistra el codepoint original, así el texto localizado sigue resolviendo aunque visualmente se vea sin acento. - Omitido: si no hay glifo ni fallback, el caracter se descarta y
no aparece en el
.fnt.
Esto permite usar fuentes pixel-art genéricas con texto en castellano/catalán/valenciano sin que el TTF tenga explícitamente cada acento.
Estructura
font_gen.py— núcleo de rasterizado + CLI.font_gen_gui.py— interfaz Tk; importa el núcleo.
Ambos ficheros standalone: cópialos a cualquier directorio y ejecútalos.