Programador

Reduzir o tamanho de uma fonte (subsetting) TTF, OTF, WOFF

Inspecione uma fonte, mantenha os caracteres úteis e exporte TTF e WOFF.

  • Instantânea
  • Grátis
  • Privada (processada localmente)
  • Sem registo

Largue uma fonte aqui (TTF, OTF, WOFF, TTC) ou escolha um ficheiro

Fonte de demonstração gerada no seu navegador: carregue o seu próprio ficheiro para o reduzir.

Inspetor de fontes

Permissões de incorporação (OS/2 fsType)

    Eixos de variação (fvar)

    Cobertura Unicode

    Por bloco Unicode
    BlocoIntervaloCaracteres

    Idiomas provavelmente suportados

      Funcionalidades OpenType (GSUB e GPOS)

        Tabelas e tamanhos

        TabelaTamanhoParte

        Mapa de glifos

        Clique num carácter para o adicionar ao texto a manter.

        Reduzir: escolher os caracteres a manter

        Conjuntos predefinidos

        Modo de saída

        A tabela DSIG (assinatura digital) é sempre removida: qualquer alteração a invalidaria.

          A sua fonte nunca sai do seu dispositivo: leitura, análise, subconjunto e compressão WOFF são feitos pelo navegador, nada é enviado (importante para fontes com licença). Limites: contornos CFF/OTF não são recortados, WOFF2 não é lido (Brotli), as substituições contextuais são mantidas de forma conservadora, as sequências de variação (cmap formato 14) são descartadas e ficheiros com mais de 200 MB são recusados.

          Reduzir o tamanho de uma fonte web com subsetting, sem enviar nada

          Uma fonte completa traz milhares de glifos, e uma página usa apenas uma fração deles: reduzir o tamanho de uma fonte (o subsetting) consiste em manter só os caracteres necessários e comprimir o resultado em WOFF. As ferramentas sérias funcionam na linha de comandos (pyftsubset do fontTools, glyphhanger) ou exigem enviar o ficheiro para um servidor, o que é um problema com uma fonte licenciada.

          Esta ferramenta faz tudo no navegador: lê TTF, OTF, WOFF 1.0 e TTC, mostra um inspetor completo (nomes, licença, permissões fsType, eixos variáveis, cobertura Unicode por bloco, idiomas cobertos, funcionalidades OpenType, peso de cada tabela), cria um subconjunto TrueType com fecho de componentes e ligaturas, escreve o TTF e o WOFF, verifica que a fonte produzida carrega e gera o CSS @font-face com unicode-range.

          1. Escolher uma fonte

            Largue um ficheiro TTF, OTF, WOFF ou TTC ou clique em «Escolher uma fonte». Numa coleção TTC, selecione a fonte a extrair. Um WOFF2 (assinatura wOF2) é detetado e recusado com uma explicação.

          2. Ler o inspetor

            Verifique a família, a versão, a licença (name ID 13) e as permissões de incorporação fsType, os eixos fvar, a cobertura Unicode por bloco, os idiomas provavelmente suportados e as funcionalidades GSUB/GPOS. O mapa de glifos e a pesquisa respondem a «esta fonte tem o ẞ ou o €?».

          3. Escolher os caracteres a manter

            Cole o seu texto em «Texto a manter», marque conjuntos predefinidos (Latim básico, Latim-1, Grego, Cirílico…) ou escreva intervalos Unicode. O contador indica os caracteres presentes, os em falta e os glifos mantidos após o fecho.

          4. Definir o modo de saída

            «Manter funcionalidades OpenType» preserva kerning, ligaturas e eixos variáveis; «Ficheiro mais pequeno» renumera os glifos e remove as tabelas de composição. Decida se remove o hinting e se usa a tabela name mínima.

          5. Criar o subconjunto

            Clique em «Criar o subconjunto»: a ferramenta mostra o tamanho antes e depois, o detalhe por tabela, a autoverificação da renderização, os botões «Transferir .ttf» e «Transferir .woff» e o excerto CSS para copiar.

          Como o subconjunto é construído

          A ferramenta lê o diretório sfnt descrito na especificação OpenType e depois a tabela cmap (formatos 4 e 12 em primeiro lugar) para ligar os seus caracteres aos glifos. A seguir calcula o fecho: os componentes dos glifos compostos (um «é» que reutiliza «e» e o acento), e, se as funcionalidades forem mantidas, as substituições GSUB dos tipos 1 a 4 (simples, múltiplas, alternativas e ligaturas como fi, fl, ffi) iteradas até estabilizarem, os sub-lookups das substituições contextuais (tipos 5, 6 e 8, extensões de tipo 7 resolvidas) de forma conservadora, as variantes da tabela MATH e as camadas de cor da tabela COLR.

          • Modo «manter funcionalidades»: os identificadores de glifo não mudam; os contornos não usados são esvaziados (entradas loca de comprimento zero), a cmap é reconstruída, GSUB, GPOS, GDEF, kern e fvar ficam intactas e, portanto, válidas, e a gvar perde apenas os dados dos glifos removidos.
          • Modo «ficheiro mais pequeno»: os glifos são renumerados de forma compacta, os componentes são remapeados, hmtx, loca, glyf, cmap, maxp, hhea e post são reconstruídas e as tabelas de composição e de variação são removidas.
          • Remoção do hinting: fpgm, prep, cvt, hdmx, VDMX e LTSH desaparecem, as instruções são retiradas dos glifos simples e compostos, e maxp e gasp são ajustadas como faz o pyftsubset.
          • Escrita: diretório ordenado, tabelas alinhadas a 4 bytes, somas de verificação e checkSumAdjustment de head recalculados, loca curto ou longo conforme o tamanho, e WOFF 1.0 com zlib por tabela (uma tabela fica sem compressão quando esta não ajuda).
          • Autoverificação: a fonte produzida é carregada com a API FontFace e o seu texto de pré-visualização é renderizado com o original e o subconjunto lado a lado, comparando píxeis.

          Quanto pesa cada tabela e o que a ferramenta faz

          TabelasFunçãoTratamento
          glyf, locaContornos TrueType e índice de glifos: a maior parte do pesoContornos não usados esvaziados (modo manter) ou removidos e renumerados (modo mínimo)
          cmapCorrespondência carácter Unicode → glifoReconstruída: formato 4 para o BMP, formato 12 acrescentado para caracteres fora do BMP
          hmtx, hheaLarguras de avanço e margens esquerdasMantidas tal como estão (identificadores estáveis) ou reconstruídas com numberOfHMetrics otimizado
          GSUB, GPOS, GDEF, kernLigaturas, substituições, kerning, posição dos diacríticosIntactas no modo manter, removidas no modo mínimo (com aviso)
          fpgm, prep, cvt, hdmx, VDMX, LTSHHinting TrueType e métricas de dispositivoRemovidas com «Remover o hinting», instruções dos glifos retiradas
          name, post, DSIGNomes e licença, nomes de glifos, assinatura digitalname completa ou mínima (IDs 0 a 6, 13, 14, 16, 17, mais os nomes de eixos e instâncias de uma fonte variável), post em formato 3, DSIG sempre removida

          Comportamento com fontes de contornos TrueType (glyf). As fontes CFF/OTF são inspecionadas, convertidas para WOFF e despojadas de tabelas, mas os seus contornos não são recortados.

          Quando reduzir uma fonte

          • Site institucional ou blogue: servir só o latim básico, o Latim-1 e a pontuação tipográfica para acelerar a primeira apresentação do texto.
          • Título ou logótipo numa fonte decorativa: manter apenas as letras do slogan, alguns kilobytes em vez de centenas.
          • Fontes CJK (TrueType): colar o texto real da página para passar de vários megabytes para algumas dezenas de kilobytes (IPA Gothic: de 6,2 MB para cerca de 55 KB em WOFF com um parágrafo de 154 caracteres distintos, 22 KB no modo «Ficheiro mais pequeno»); as fontes CJK em OTF/CFF não são recortadas.
          • Auditoria antes de comprar ou incorporar: verificar a cobertura de idiomas, as funcionalidades OpenType (tnum, smcp, ss01…) e as permissões fsType sem instalar a fonte.
          • Conversão de TTF para WOFF: obter um WOFF 1.0 válido e o excerto @font-face correspondente sem enviar um ficheiro licenciado para um servidor.

          Problemas frequentes e soluções

          • Alguns caracteres aparecem noutra fonte: não estão no subconjunto; o contador e a autoverificação assinalam os em falta, acrescente-os ao texto a manter.
          • As ligaturas ou o kerning desapareceram: escolheu «Ficheiro mais pequeno»; volte a «Manter funcionalidades OpenType».
          • O WOFF não é tão pequeno como esperava: no modo manter, hmtx e loca mantêm o tamanho original; o WOFF comprime muito bem essas zonas e o modo mínimo reduz-as de facto.
          • Fonte WOFF2 recusada: converta-a primeiro para TTF ou WOFF com outra ferramenta (a ferramenta não inclui um descodificador Brotli/WOFF2).
          • Fonte OTF não recortada: os seus contornos são CFF; converta-a para TTF antes de a reduzir, ou fique pela inspeção e pela conversão para WOFF.

          Privacidade: a fonte é lida, analisada e reescrita pelo seu navegador; nenhum ficheiro é enviado ou guardado, o que importa numa fonte licenciada. Limites: os contornos CFF/OTF não são recortados, o WOFF2 não é lido nem escrito, as substituições contextuais são mantidas de forma conservadora (o subconjunto pode conter alguns glifos a mais), as sequências de variação (cmap formato 14) são descartadas, as tabelas de bitmaps e de cor são removidas no modo mínimo e os ficheiros com mais de 200 MB são recusados. Verifique a sua licença antes de publicar uma fonte reduzida.

          Perguntas frequentes

          O que é o subsetting de uma fonte e quanto poupa?

          O subsetting mantém no ficheiro apenas os glifos de que as suas páginas precisam, por exemplo o latim básico e alguns acentos em vez dos milhares de caracteres de uma fonte completa. A poupança depende sobretudo do que a fonte contém: numa fonte grande com várias escritas, um subconjunto latino fica muitas vezes em apenas 5 a 10 % do original, enquanto uma fonte já limitada ao latim perde bastante menos. A compressão WOFF retira depois ainda entre um quarto e metade. Medido com esta ferramenta: a DejaVu Sans (6.253 glifos, 742 KB) reduzida ao latim básico e ao Latim-1 pesa cerca de 50 KB em WOFF com as funcionalidades OpenType mantidas, e 14 KB no modo «Ficheiro mais pequeno». A ferramenta mostra o tamanho antes e depois, tabela a tabela.

          Posso reduzir uma fonte que comprei?

          Depende da licença. Licenças livres como a OFL ou a Apache permitem modificações (a OFL considera, porém, um subconjunto uma versão modificada: se a fonte tiver um Reserved Font Name, o ficheiro reduzido tem de ser renomeado); muitas licenças web comerciais permitem o subsetting para incorporação, outras proíbem-no expressamente. A ferramenta mostra o texto da licença guardado na fonte (name ID 13) e descodifica o campo fsType: se tiver o bit «no subsetting» (0x0100), a licença pede que a fonte não seja recortada. Verifique sempre o seu contrato antes de publicar o ficheiro.

          Porque é que o WOFF2 não é suportado?

          O WOFF2 baseia-se na compressão Brotli e numa transformação específica das tabelas glyf e loca, enquanto a API Compression Streams dos navegadores só oferece gzip e deflate em todos eles (o Chrome ainda não descodifica Brotli nativamente). Ler ou produzir WOFF2 exigiria incluir uma biblioteca Brotli e esse descodificador, o que esta ferramenta 100 % local não faz. Converta o seu WOFF2 para TTF ou WOFF com outra ferramenta, reduza-o aqui e volte a WOFF2 se quiser: o WOFF2 é normalmente 15 a 30 % mais pequeno do que o WOFF 1.0 (ganho mediano de cerca de 25 % em fontes TrueType segundo o relatório de avaliação do W3C).

          Qual é a diferença entre «manter funcionalidades OpenType» e «ficheiro mais pequeno»?

          O primeiro modo mantém os identificadores de glifo e esvazia apenas os contornos não usados: as tabelas GSUB, GPOS, GDEF e kern continuam válidas, por isso ligaturas, kerning e eixos de uma fonte variável continuam a funcionar. O segundo renumera os glifos e remove essas tabelas: o ficheiro é mínimo, mas sem kerning nem ligaturas, e uma fonte variável passa a ser a sua instância predefinida. Para um site, o primeiro modo é quase sempre a escolha certa.

          Remover o hinting altera a renderização?

          O hinting TrueType (tabelas fpgm, prep e cvt mais as instruções dos glifos) importa sobretudo para a renderização ClearType do Windows em tamanhos pequenos. macOS, iOS, Android e a maioria dos navegadores Linux ignoram-no. Removê-lo reduz muitas vezes uma fonte muito «hintada» em 20 a 50 %, em troca de uma renderização ligeiramente diferente no Windows em corpos pequenos. A opção vem ativada; desmarque-a se o seu público usar sobretudo Windows com texto pequeno.

          Como uso o unicode-range no CSS gerado?

          O descritor unicode-range enumera os caracteres contidos no subconjunto na forma mais curta (intervalos fundidos, wildcards quando o intervalo está alinhado). O navegador só transfere o ficheiro se a página usar pelo menos um desses caracteres, o que permite dividir uma fonte em vários ficheiros (latim, cirílico, grego) carregados a pedido. Cole o excerto @font-face na sua folha de estilos e coloque os ficheiros no caminho indicado em src.