Desarrollador

Reducir el peso de una fuente (subsetting) TTF, OTF, WOFF

Inspecciona una fuente, conserva los caracteres útiles y exporta TTF y WOFF.

  • Instantánea
  • Gratis
  • Privada (procesada localmente)
  • Sin registro

Suelta una fuente aquí (TTF, OTF, WOFF, TTC) o elige un archivo

Fuente de demostración generada en tu navegador: carga tu propio archivo para reducirlo.

Inspector de fuentes

Permisos de incrustación (OS/2 fsType)

    Ejes de variación (fvar)

    Cobertura Unicode

    Por bloque Unicode
    BloqueRangoCaracteres

    Idiomas probablemente cubiertos

      Funciones OpenType (GSUB y GPOS)

        Tablas y tamaños

        TablaTamañoParte

        Mapa de glifos

        Haz clic en un carácter para añadirlo al texto a conservar.

        Reducir: elegir los caracteres a conservar

        Conjuntos predefinidos

        Modo de salida

        La tabla DSIG (firma digital) se elimina siempre: cualquier cambio la invalidaría.

          Tu fuente nunca sale de tu dispositivo: lectura, análisis, subconjunto y compresión WOFF se hacen en tu navegador, no se sube nada (importante con fuentes con licencia). Límites: los contornos CFF/OTF no se recortan, no se lee WOFF2 (Brotli), las sustituciones contextuales se conservan de forma conservadora, las secuencias de variación (cmap formato 14) se descartan y se rechazan archivos de más de 200 MB.

          Reducir una fuente web con subsetting, sin subir nada

          Una fuente completa incluye miles de glifos y una página usa solo una fracción: reducir una fuente (el subsetting) consiste en conservar únicamente los caracteres necesarios y comprimir el resultado en WOFF. Las herramientas serias son de línea de comandos (pyftsubset de fontTools, glyphhanger) o exigen subir el archivo a un servidor, un problema con una fuente con licencia.

          Esta herramienta lo hace todo en el navegador: lee TTF, OTF, WOFF 1.0 y TTC, muestra un inspector completo (nombres, licencia, permisos fsType, ejes variables, cobertura Unicode por bloque, idiomas cubiertos, funciones OpenType, peso de cada tabla), crea un subconjunto TrueType con cierre de componentes y ligaduras, escribe el TTF y el WOFF, comprueba que la fuente producida se carga y genera el CSS @font-face con unicode-range.

          1. Elegir una fuente

            Suelta un archivo TTF, OTF, WOFF o TTC, o pulsa «Elegir una fuente». En una colección TTC, selecciona la fuente a extraer. Un WOFF2 (firma wOF2) se detecta y se rechaza con una explicación.

          2. Leer el inspector

            Revisa la familia, la versión, la licencia (name ID 13) y los permisos de incrustación fsType, los ejes fvar, la cobertura Unicode por bloque, los idiomas probablemente cubiertos y las funciones GSUB/GPOS. El mapa de glifos y el buscador responden a «¿esta fuente tiene la ẞ o el €?».

          3. Elegir los caracteres a conservar

            Pega tu texto en «Texto a conservar», marca conjuntos predefinidos (Latín básico, Latín-1, Griego, Cirílico…) o escribe rangos Unicode. El contador indica los caracteres presentes, los ausentes y los glifos conservados tras el cierre.

          4. Ajustar el modo de salida

            «Conservar funciones OpenType» mantiene interletraje, ligaduras y ejes variables; «Archivo más pequeño» renumera los glifos y elimina las tablas de composición. Decide si quitar el hinting y usar la tabla name mínima.

          5. Crear el subconjunto

            Pulsa «Crear el subconjunto»: la herramienta muestra el tamaño antes y después, el detalle por tabla, la autocomprobación de renderizado, los botones «Descargar .ttf» y «Descargar .woff» y el fragmento CSS para copiar.

          Cómo se construye el subconjunto

          La herramienta lee el directorio sfnt descrito en la especificación OpenType y luego la tabla cmap (formatos 4 y 12 en primer lugar) para relacionar tus caracteres con los glifos. Después calcula el cierre: los componentes de los glifos compuestos (una «é» que reutiliza «e» y el acento), y, si se conservan las funciones, las sustituciones GSUB de tipos 1 a 4 (simples, múltiples, alternativas y ligaduras como fi, fl, ffi) iteradas hasta estabilizarse, los sub-lookups de las sustituciones contextuales (tipos 5, 6 y 8, extensiones de tipo 7 resueltas) de forma conservadora, las variantes de la tabla MATH y las capas de color de la tabla COLR.

          • Modo «conservar funciones»: los identificadores de glifo no cambian; los contornos no usados se vacían (entradas loca de longitud cero), la cmap se reconstruye, GSUB, GPOS, GDEF, kern y fvar quedan intactas y, por tanto, válidas, y gvar solo pierde los datos de los glifos eliminados.
          • Modo «archivo más pequeño»: los glifos se renumeran de forma compacta, los componentes se reasignan, se reconstruyen hmtx, loca, glyf, cmap, maxp, hhea y post, y se eliminan las tablas de composición y de variación.
          • Quitar el hinting: desaparecen fpgm, prep, cvt, hdmx, VDMX y LTSH, se retiran las instrucciones de los glifos simples y compuestos, y maxp y gasp se ajustan como hace pyftsubset.
          • Escritura: directorio ordenado, tablas alineadas a 4 bytes, sumas de comprobación y checkSumAdjustment de head recalculados, loca corto o largo según el tamaño, y WOFF 1.0 con zlib por tabla (una tabla queda sin comprimir si la compresión no ayuda).
          • Autocomprobación: la fuente producida se carga con la API FontFace y tu texto de vista previa se renderiza con el original y el subconjunto lado a lado, comparando píxeles.

          Cuánto pesa cada tabla y qué hace la herramienta

          TablasFunciónTratamiento
          glyf, locaContornos TrueType e índice de glifos: la mayor parte del pesoContornos no usados vaciados (modo conservar) o eliminados y renumerados (modo mínimo)
          cmapCorrespondencia carácter Unicode → glifoReconstruida: formato 4 para el BMP, formato 12 añadido para caracteres fuera del BMP
          hmtx, hheaAnchos de avance y márgenes izquierdosConservadas tal cual (identificadores estables) o reconstruidas con numberOfHMetrics optimizado
          GSUB, GPOS, GDEF, kernLigaduras, sustituciones, interletraje, posición de diacríticosIntactas en modo conservar, eliminadas en modo mínimo (con aviso)
          fpgm, prep, cvt, hdmx, VDMX, LTSHHinting TrueType y métricas de dispositivoEliminadas con «Quitar el hinting», instrucciones de glifos retiradas
          name, post, DSIGNombres y licencia, nombres de glifos, firma digitalname completa o mínima (IDs 0 a 6, 13, 14, 16, 17, más los nombres de ejes e instancias de una fuente variable), post en formato 3, DSIG siempre eliminada

          Comportamiento con fuentes de contornos TrueType (glyf). Las fuentes CFF/OTF se inspeccionan, se convierten a WOFF y pierden tablas, pero sus contornos no se recortan.

          Cuándo reducir una fuente

          • Web corporativa o blog: servir solo latín básico, Latín-1 y puntuación tipográfica para acelerar el primer renderizado del texto.
          • Título o logotipo con una fuente decorativa: conservar solo las letras del eslogan, unos pocos kilobytes en vez de cientos.
          • Fuentes CJK (TrueType): pegar el texto real de la página para pasar de varios megabytes a unas decenas de kilobytes (IPA Gothic: de 6,2 MB a unos 55 KB en WOFF con un párrafo de 154 caracteres distintos, 22 KB en modo «Archivo más pequeño»); las fuentes CJK en OTF/CFF no se recortan.
          • Auditoría antes de comprar o incrustar: comprobar la cobertura de idiomas, las funciones OpenType (tnum, smcp, ss01…) y los permisos fsType sin instalar la fuente.
          • Conversión de TTF a WOFF: obtener un WOFF 1.0 válido y su fragmento @font-face sin enviar un archivo con licencia a un servidor.

          Problemas frecuentes y soluciones

          • Algunos caracteres se ven con otra fuente: no están en el subconjunto; el contador y la autocomprobación señalan los ausentes, añádelos al texto a conservar.
          • Han desaparecido las ligaduras o el interletraje: elegiste «Archivo más pequeño»; vuelve a «Conservar funciones OpenType».
          • El WOFF no es tan pequeño como esperabas: en modo conservar, hmtx y loca mantienen su tamaño original; el WOFF comprime muy bien esas zonas y el modo mínimo las reduce de verdad.
          • Fuente WOFF2 rechazada: conviértela antes a TTF o WOFF con otra herramienta (la herramienta no incluye un decodificador Brotli/WOFF2).
          • Fuente OTF sin recortar: sus contornos son CFF; conviértela a TTF antes de reducirla, o limítate a la inspección y a la conversión a WOFF.

          Privacidad: la fuente se lee, analiza y reescribe en tu navegador; ningún archivo se sube ni se guarda, algo importante con una fuente con licencia. Límites: los contornos CFF/OTF no se recortan, WOFF2 no se lee ni se escribe, las sustituciones contextuales se conservan de forma conservadora (el subconjunto puede incluir algunos glifos más de los necesarios), las secuencias de variación (cmap formato 14) se descartan, las tablas de mapas de bits y color se eliminan en modo mínimo y se rechazan archivos de más de 200 MB. Comprueba tu licencia antes de publicar una fuente reducida.

          Preguntas frecuentes

          ¿Qué es el subsetting de una fuente y cuánto ahorra?

          El subsetting conserva en el archivo solo los glifos que necesitan tus páginas, por ejemplo el latín básico y unos acentos en lugar de los miles de caracteres de una fuente completa. El ahorro depende sobre todo de lo que contenga la fuente: en una fuente grande con varias escrituras, un subconjunto latino suele quedarse en un 5 a 10 % del original, mientras que una fuente ya limitada al latín pierde mucho menos. La compresión WOFF quita después entre un cuarto y la mitad más. Medido con esta herramienta: DejaVu Sans (6.253 glifos, 742 KB) reducida al latín básico y al Latín-1 pesa unos 50 KB en WOFF conservando las funciones OpenType, y 14 KB en modo «Archivo más pequeño». La herramienta muestra el tamaño antes y después, tabla por tabla.

          ¿Puedo reducir una fuente que he comprado?

          Depende de la licencia. Las licencias libres como OFL o Apache permiten modificarla (la OFL, eso sí, considera un subconjunto una versión modificada: si la fuente lleva un Reserved Font Name, el archivo reducido debe renombrarse); muchas licencias web comerciales permiten el subsetting para incrustar, otras lo prohíben expresamente. La herramienta muestra el texto de licencia guardado en la fuente (name ID 13) y decodifica el campo fsType: si lleva el bit «no subsetting» (0x0100), la licencia pide no recortar la fuente. Comprueba siempre tu contrato antes de publicar el archivo.

          ¿Por qué no se admite WOFF2?

          WOFF2 se basa en la compresión Brotli y en una transformación específica de las tablas glyf y loca, mientras que la API Compression Streams de los navegadores solo ofrece gzip y deflate en todos ellos (Chrome aún no decodifica Brotli de forma nativa). Leer o producir WOFF2 exigiría incluir una biblioteca Brotli y ese decodificador, algo que esta herramienta 100 % local no hace. Convierte tu WOFF2 a TTF o WOFF con otra herramienta, redúcelo aquí y vuelve a WOFF2 si quieres: WOFF2 suele pesar entre un 15 y un 30 % menos que WOFF 1.0 (ganancia mediana de cerca del 25 % en fuentes TrueType según el informe de evaluación del W3C).

          ¿Qué diferencia hay entre «conservar funciones OpenType» y «archivo más pequeño»?

          El primer modo mantiene los identificadores de glifo y solo vacía los contornos no usados: las tablas GSUB, GPOS, GDEF y kern siguen siendo válidas, así que ligaduras, interletraje y ejes de una fuente variable siguen funcionando. El segundo renumera los glifos y elimina esas tablas: el archivo es mínimo, pero sin interletraje ni ligaduras, y una fuente variable pasa a ser su instancia predeterminada. Para una web, el primer modo casi siempre es la mejor opción.

          ¿Quitar el hinting cambia el renderizado?

          El hinting TrueType (tablas fpgm, prep y cvt más las instrucciones de los glifos) importa sobre todo para ClearType en Windows a tamaños pequeños. macOS, iOS, Android y casi todos los navegadores de Linux lo ignoran. Quitarlo suele reducir una fuente muy hintada entre un 20 y un 50 %, a cambio de un renderizado algo distinto en Windows en cuerpos pequeños. La opción viene activada; desmárcala si tu público usa sobre todo Windows con texto pequeño.

          ¿Cómo uso unicode-range en el CSS generado?

          El descriptor unicode-range enumera los caracteres que contiene el subconjunto en su forma más corta (rangos fusionados, comodines cuando el rango está alineado). El navegador solo descarga el archivo si la página usa al menos uno de esos caracteres, lo que permite dividir una fuente en varios archivos (latín, cirílico, griego) cargados bajo demanda. Pega el fragmento @font-face en tu hoja de estilos y coloca los archivos en la ruta indicada en src.