Pular para o conteúdo
getnextpdf.com

Pro edição

Ferramentas de Fontes

O NextPDF Pro inspeciona programas de fontes incorporadas, identifica fontes de subconjunto pela sua convenção de nomenclatura padrão e produz um plano de de-subset estruturado com um impacto estimado de tamanho.

Este recurso vem no NextPDF Pro (nextpdf/pro) e é ativado com um envelope de licença de nível Pro. Uma implantação sem esse direito não carrega as classes do recurso. Compare as edições e obtenha uma licença.

Nenhum sinalizador de licença por recurso restringe este módulo. As classes do Font Tools estão disponíveis sempre que o nextpdf/pro está instalado.

Terminal window
composer require nextpdf/pro:^3

As fontes de subconjunto em um PDF incorporam apenas os glifos que o documento usa. Por convenção, o nome /BaseFont delas carrega uma tag de seis letras maiúsculas seguida de +, por exemplo ABCDEF+Arial. O NextPDF Pro:

  • Detecta subconjuntos. FontDesubsetter varre os dados brutos do PDF em busca de entradas /BaseFont, reconhece o padrão de prefixo de subconjunto e relata cada entrada como um objeto de valor SubsetInfo com o nome da família original, a contagem de glifos do subconjunto, a contagem total de glifos e a codificação.
  • Planeja o de-subset. DesubsetPlan reúne as fontes de subconjunto visadas para substituição por programas de fonte completos e relata um aumento estimado em bytes, para que você possa decidir se o de-subset vale o custo de tamanho de arquivo antes de agir.

O Font Tools é uma camada de análise e planejamento. Ele descreve o que está presente e quanto custaria o de-subset; ele mesmo não reescreve o programa de fonte.

Reescrever um programa de fonte incorporado é a parte difícil e arriscada. Contornos de glifos, hinting e tabelas cmap precisam permanecer consistentes, e um único erro corrompe a renderização. Por isso, o NextPDF Pro separa o trabalho barato e seguro — inventário e projeção de custo — desse trabalho caro de reescrita. O scanner lê apenas bytes; ele nunca analisa nem executa um programa de fonte, então permanece determinístico e livre de efeitos colaterais. As contagens de glifos e o delta de tamanho são rotulados como heurísticas de propósito, para que uma decisão de capacidade permaneça honesta em vez de confiar em um número que o módulo não consegue medir. Isso permite que você avalie se o de-subset vale o custo antes de buscar programas de fonte completos.

Contexto de projeto: Fontes: a parte difícil.

ClasseResponsabilidade
FontDesubsetterVarrer os dados do PDF e relatar entradas de fontes de subconjunto.
SubsetInfoDescrição imutável de um subconjunto detectado.
DesubsetPlanSubconjuntos visados mais aumento estimado de tamanho.
use NextPDF\Pro\FontTools\FontDesubsetter;
$subsets = (new FontDesubsetter())->analyzeSubsets($pdfBytes);
foreach ($subsets as $info) {
echo $info->baseFont . ': ' . $info->subsetGlyphCount . " glyphs\n";
}
use NextPDF\Pro\FontTools\FontDesubsetter;
$desubsetter = new FontDesubsetter();
$subsets = $desubsetter->analyzeSubsets($pdfBytes);
$logger->info('fonttools.scan', ['subset_count' => count($subsets)]);
  • O scanner relata um /BaseFont sem o prefixo de seis letras como uma entrada que não é de subconjunto, em vez de ignorá-la.
  • O aumento estimado de tamanho é uma heurística baseada na média de bytes por glifo, não um valor medido.
  • A detecção funciona sobre a representação em bytes das entradas /BaseFont; object streams criptografados ou muito comprimidos podem precisar ser decodificados primeiro.

A varredura de subconjuntos é linear no comprimento em bytes do PDF. O planejamento é linear no número de subconjuntos detectados.

O Font Tools lê apenas metadados estruturais. Ele não executa programas de fonte nem resolve referências de fonte externas.

ComportamentoReferênciaStatus
Convenção de nomenclatura de fontes de subconjuntoISO 32000-2 §9.9.2Alinhado (parafraseado)
  • FontDesubsetter::analyzeSubsets() varre os dados brutos do PDF em busca de entradas /BaseFont, reconhece o prefixo de subconjunto de seis letras maiúsculas mais +, e retorna cada uma como um SubsetInfo imutável com o nome da família original, a contagem de glifos do subconjunto, a contagem total de glifos e a codificação.
  • Um /BaseFont sem o prefixo de subconjunto é relatado como uma entrada que não é de subconjunto, em vez de ser ignorado.
  • DesubsetPlan reúne os subconjuntos visados para substituição e relata um aumento estimado em bytes baseado na média de bytes por glifo — uma heurística, não um valor medido.
  • Esta é uma camada de análise e planejamento. Ela relata o que está presente e quanto custaria o de-subset; ela não reescreve o programa de fonte, não executa programas de fonte nem resolve referências de fonte externas.

O Enterprise não altera o comportamento do Font Tools. O Enterprise acrescenta recursos de nível superior documentados separadamente; eles não são necessários para a detecção de subconjuntos ou o planejamento de de-subset.

O pipeline de fontes open-source do NextPDF Core lida com a incorporação de fontes base. A contabilização de subconjuntos e o planejamento de de-subset são acréscimos do Pro. Consulte /modules/font/.

Esta página documenta apenas o comportamento observável externamente e a superfície pública de API suportada. Caminhos de namespace internos, classes helper, tabelas de mecanismos, nomes de arquivos de runbook e prefixos de tickets estão fora de escopo.