Estime a economia com subconjuntos de fontes em PDF
Este estimador compara os caracteres distintos usados em um PDF com o inventário completo de glifos da fonte incorporada.
Executar grátis
Ele informa os percentuais estimados mantido e economizado, os glifos removidos e a razão de redução. O cálculo é transparente: pressupõe que o armazenamento seja distribuído igualmente entre os glifos. Assim, você pode planejar e comparar antes de recriar o PDF, sem uma falsa promessa de precisão em bytes que somente essas duas contagens não permitem.
O que a estimativa revela
Uma fonte incorporada por inteiro pode conter milhares de glifos, mesmo quando o documento usa apenas um alfabeto pequeno, alguns algarismos e sinais de pontuação. A criação de subconjuntos mantém os glifos necessários para exibir o documento e elimina os demais. Informe a contagem completa de glifos da fonte e o número de caracteres distintos presentes no PDF. O estimador considera cada caractere usado como um glifo mantido e compara esse subconjunto com o inventário total. O percentual de economia representa a parcela estimada dos dados de glifos que poderia ser removida. O percentual mantido mostra a parcela complementar, e a razão de redução indica quantas vezes o inventário completo é maior que o subconjunto estimado. Esses valores são especialmente úteis para classificar documentos ou fontes com rapidez. Uma economia potencial expressiva indica que vale a pena investigar o uso de subconjuntos; um resultado próximo de zero mostra que o documento já utiliza quase todo o inventário disponível. A estimativa se refere à parte da fonte incorporada, não ao arquivo PDF inteiro. Imagens, fluxos de conteúdo, metadados, estrutura e outros recursos incorporados permanecem inalterados.
Como funciona o modelo proporcional
O algoritmo divide a quantidade de caracteres distintos usados pelo total de glifos para estimar a fração mantida. Depois, subtrai essa fração de um para estimar a economia, converte as duas frações em percentuais e arredonda os valores exibidos para duas casas decimais. Ele também subtrai a contagem usada da total para informar quantos glifos podem ser removidos. Trata-se de um modelo proporcional de espaço por glifo, e não de um analisador de fontes. Fontes reais não destinam exatamente o mesmo número de bytes a cada glifo: um espaço simples pode exigir poucos dados de contorno, enquanto um ideograma complexo pode precisar de muito mais. As fontes também contêm tabelas de nomes, métricas, regras de composição, eixos de variação, dicas de renderização, kerning e mapeamento de caracteres. Algumas representam uma sobrecarga fixa; outras podem diminuir com o subconjunto. Portanto, interprete a estimativa como uma métrica consistente de planejamento sob a hipótese de um glifo médio uniforme. Não é possível calcular a economia absoluta em bytes apenas com as contagens. Para isso, também seriam necessários o tamanho original da fonte incorporada, o formato, a compressão, os recursos tipográficos mantidos, as dependências de glifos compostos e o programa de subsetting utilizado.
Como obter contagens confiáveis
Use a contagem de glifos do programa de fonte exato incorporado ou destinado ao PDF, não a de uma fonte de desktop com nome parecido. Versões e variantes regionais diferentes podem ter inventários distintos. Conte caracteres únicos no documento inteiro depois de definir as regras de normalização de texto, pois sequências visualmente idênticas podem usar pontos de código Unicode diferentes. Lembre-se de que contagem de caracteres nem sempre equivale à de glifos. Ligaturas podem reunir vários caracteres em um glifo, a composição contextual pode selecionar formas distintas, e glifos compostos podem trazer componentes que não são óbvios no texto. Este estimador usa intencionalmente a contagem de caracteres distintos como aproximação prática, pois essa é a informação disponível. Em comparações, aplique o mesmo método a todos os documentos para manter a consistência. Se os caracteres usados excederem o total de glifos, a solicitação será rejeitada em vez de produzir uma economia negativa. Isso costuma indicar fontes de dados incompatíveis, confusão entre caracteres totais e distintos ou uma fonte alternativa omitida. Depois de gerar o PDF real com subconjunto, verifique o resultado em um inspetor de PDF e compare os tamanhos efetivos para obter a medição definitiva.
Casos de uso
Priorizar a otimização de PDFs
Compare a economia estimada entre vários arquivos e investigue primeiro os documentos com a maior parcela de glifos sem uso.
Avaliar opções de fontes
Estime se uma fonte multilíngue ampla gera uma sobrecarga muito maior que uma fonte adequada à escrita do documento.
Alinhar expectativas antes da exportação
Ofereça à equipe de produção uma estimativa relativa transparente antes de recriar o PDF com subsetting ativado.
Perguntas frequentes
O resultado prevê exatamente quantos bytes serão economizados?
Não. As contagens permitem uma estimativa relativa, mas os bytes também dependem da complexidade dos glifos, das tabelas, do formato, da compressão e do gerador do subconjunto.
Por que usar caracteres distintos em vez do total de caracteres?
Caracteres repetidos normalmente reutilizam o mesmo glifo incorporado; por isso, o uso distinto aproxima melhor o inventário do subconjunto.
O percentual de economia vale para o PDF inteiro?
Não. Ele se aplica à parcela estimada de glifos da fonte incorporada. Os demais conteúdos do PDF não são afetados.
O que ocorre quando os caracteres usados superam os glifos da fonte?
A entrada é rejeitada porque as contagens são incompatíveis e produziriam uma economia negativa.
É possível informar zero caractere distinto?
Sim. Isso representa um documento teórico que não mantém glifos de caracteres e gera uma estimativa proporcional de economia total.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002; o mesmo cálculo determinístico também pode ser executado no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/pdf/embed-font-subset-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"full_glyph_count":2048,"distinct_characters_used":180}'const res = await fetch("https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"full_glyph_count": 2048,
"distinct_characters_used": 180
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/embed-font-subset-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"full_glyph_count": 2048,
"distinct_characters_used": 180
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"full_glyph_count":2048,"distinct_characters_used":180}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"full_glyph_count":2048,"distinct_characters_used":180}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/embed-font-subset-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"full_glyph_count": 2048,
"distinct_characters_used": 180
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.embed_font_subset_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |