Files
font-gen/README.md
T

94 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 32126 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):
```sh
sudo apt install python3-tk python3-pil python3-pil.imagetk
```
- `python3-pil` es Pillow (no en PyPI con ese nombre).
- `python3-pil.imagetk` es el bridge PIL ↔ Tk que la GUI usa para el preview.
- `python3-tk` es 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):
```sh
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
```sh
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:
```sh
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):
```sh
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
1. **Glifo nativo**: si el TTF tiene el caracter en su `cmap`, se dibuja tal cual.
2. **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 `.fnt` registra el codepoint original**, así el texto localizado
sigue resolviendo aunque visualmente se vea sin acento.
3. **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.