Pro edição
Ferramentas de Fontes
Visão geral
Seção intitulada “Visão geral”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.
Disponibilidade e licenciamento
Seção intitulada “Disponibilidade e licenciamento”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.
Instalação
Seção intitulada “Instalação”composer require nextpdf/pro:^3Visão conceitual
Seção intitulada “Visão conceitual”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.
FontDesubsettervarre 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 valorSubsetInfocom 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.
DesubsetPlanreú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.
Por que funciona assim
Seção intitulada “Por que funciona assim”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.
Superfície da API
Seção intitulada “Superfície da API”| Classe | Responsabilidade |
|---|---|
FontDesubsetter | Varrer os dados do PDF e relatar entradas de fontes de subconjunto. |
SubsetInfo | Descrição imutável de um subconjunto detectado. |
DesubsetPlan | Subconjuntos visados mais aumento estimado de tamanho. |
Exemplo de código — Início rápido
Seção intitulada “Exemplo de código — Início rápido”use NextPDF\Pro\FontTools\FontDesubsetter;
$subsets = (new FontDesubsetter())->analyzeSubsets($pdfBytes);foreach ($subsets as $info) { echo $info->baseFont . ': ' . $info->subsetGlyphCount . " glyphs\n";}Exemplo de código — Produção
Seção intitulada “Exemplo de código — Produção”use NextPDF\Pro\FontTools\FontDesubsetter;
$desubsetter = new FontDesubsetter();$subsets = $desubsetter->analyzeSubsets($pdfBytes);$logger->info('fonttools.scan', ['subset_count' => count($subsets)]);Casos extremos e armadilhas
Seção intitulada “Casos extremos e armadilhas”- O scanner relata um
/BaseFontsem 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.
Desempenho
Seção intitulada “Desempenho”A varredura de subconjuntos é linear no comprimento em bytes do PDF. O planejamento é linear no número de subconjuntos detectados.
Notas de segurança
Seção intitulada “Notas de segurança”O Font Tools lê apenas metadados estruturais. Ele não executa programas de fonte nem resolve referências de fonte externas.
Conformidade
Seção intitulada “Conformidade”| Comportamento | Referência | Status |
|---|---|---|
| Convenção de nomenclatura de fontes de subconjunto | ISO 32000-2 §9.9.2 | Alinhado (parafraseado) |
Contrato de comportamento
Seção intitulada “Contrato de comportamento”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 umSubsetInfoimutável com o nome da família original, a contagem de glifos do subconjunto, a contagem total de glifos e a codificação.- Um
/BaseFontsem o prefixo de subconjunto é relatado como uma entrada que não é de subconjunto, em vez de ser ignorado. DesubsetPlanreú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.
Nota sobre o limite do Enterprise
Seção intitulada “Nota sobre o limite do Enterprise”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.
Alternativa/fallback do Core
Seção intitulada “Alternativa/fallback do Core”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/.
Limite de publicação
Seção intitulada “Limite de publicação”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.
Veja também
Seção intitulada “Veja também”- Font Tools — Referência aprofundada — contrato de API, comportamento e modos de falha.
- Optimizer — otimização de tamanho de arquivo.
- Módulo de fontes do Core — tratamento de fontes open-source.