"""Deriva la fuente que se embarca a partir del maestro. El maestro (src/fuentes/) trae los cuatro ejes de Commissioner. El sitio solo usa el peso — nunca FLAR, VOLM ni slnt —, así que los tres se fijan en 0 y desaparecen del binario. El repertorio de caracteres NO se toca: 230 glifos, el subconjunto latino entero, porque el corpus va a crecer con textos que todavía no existen y recortar por los caracteres de hoy rompería los de mañana. Es la misma partición que en los SVG: un maestro que lo conserva todo y un embarcable que solo lleva lo que la pieza usa. """ from fontTools.ttLib import TTFont from fontTools.varLib.instancer import instantiateVariableFont import os MAESTRO = "src/fuentes/Commissioner-latin.woff2" SALIDA = "public/Commissioner-wght.woff2" f = instantiateVariableFont(TTFont(MAESTRO), {"FLAR": 0, "VOLM": 0, "slnt": 0, "wght": (100, 900)}, inplace=True, updateFontNames=False, optimize=True) f.flavor = "woff2" f.save(SALIDA) a, b = os.path.getsize(MAESTRO), os.path.getsize(SALIDA) g = TTFont(SALIDA) print(f"maestro {a:,} B → embarcable {b:,} B ({(b-a)/a*100:+.1f} %)") print(f"ejes: {[(x.axisTag, x.minValue, x.maxValue) for x in g['fvar'].axes]} · glifos: {len(g.getBestCmap())}")