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
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.
-
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.
-
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 €?».
-
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.
-
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.
-
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
| Tabelas | Função | Tratamento |
|---|---|---|
| glyf, loca | Contornos TrueType e índice de glifos: a maior parte do peso | Contornos não usados esvaziados (modo manter) ou removidos e renumerados (modo mínimo) |
| cmap | Correspondência carácter Unicode → glifo | Reconstruída: formato 4 para o BMP, formato 12 acrescentado para caracteres fora do BMP |
| hmtx, hhea | Larguras de avanço e margens esquerdas | Mantidas tal como estão (identificadores estáveis) ou reconstruídas com numberOfHMetrics otimizado |
| GSUB, GPOS, GDEF, kern | Ligaturas, substituições, kerning, posição dos diacríticos | Intactas no modo manter, removidas no modo mínimo (com aviso) |
| fpgm, prep, cvt, hdmx, VDMX, LTSH | Hinting TrueType e métricas de dispositivo | Removidas com «Remover o hinting», instruções dos glifos retiradas |
| name, post, DSIG | Nomes e licença, nomes de glifos, assinatura digital | name 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.