Roadmap

Fase 1 — Base TTF

La primera fase establece la base completa: parsear, escribir, transformar.

Parser

Decodificar un binario TTF en un struct Font completamente tipado. Todas las tablas principales decodificadas a campos con nombre. Los glifos decodificados a contornos y puntos de control — sin almacenamiento de bytes crudos.

Tablas: head, hhea, maxp, OS/2, name, cmap, post, loca, hmtx, kern, glyf.

Writer

Re-codificar un struct Font de vuelta a un binario TTF. La barra de corrección: Parse → Write en un archivo de fuente real produce una salida byte-idéntica.

Motor de Transformación

  • Struct FontPatch: parches con punteros + GlyphTransform opcional
  • Modify(*Font, FontPatch) — único punto de mutación
  • Registro de plugins: nombre → func(*Font, json.RawMessage) (FontPatch, error)
  • Cargador de pipeline JSON

CLI

handyman run pipeline.json input.ttf output.ttf

Transformaciones

PluginTablas afectadasTrabajo en contornos
boldOS/2, glyf
widthhmtx, glyf
monospacehmtxNo
bounceglyf

Fase 2 — Fuentes Variables

Agregar parsing para tablas de variación: fvar, gvar, avar, HVAR, MVAR. Exponer la mezcla de ejes como una transformación — mezclar a lo largo de wght o wdth para fuentes que lo soporten, con fallback a manipulación de contornos para fuentes estáticas.


Fase 3 — CFF/OTF

Agregar un parser de charstrings CFF que produzca el mismo struct Glyph que el parser TTF. Todas las transformaciones de la Fase 1 funcionan para archivos OTF sin cambios.


Fase 4 — UI de Escritorio

Vista previa visual de glifos, edición de parámetros en vivo y un constructor de pipelines. El CLI y el formato de pipeline siguen siendo la interfaz principal; la UI es una capa encima.