Versió inicial: CLI i GUI Tk per a fonts bitmap
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# 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):
|
||||
|
||||
```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.
|
||||
|
||||
Reference in New Issue
Block a user