Método THotPDF.SubsetLoadedFonts

Reescreve programas TrueType, OpenType CFF e CFF bruto incorporados suportados para que retenham apenas glifos alcançáveis a partir do conteúdo do documento carregado

Declaração

function SubsetLoadedFonts(
    const Options: THPDFLoadedFontSubsetOptions;
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;

Alcançabilidade

O conteúdo da página é sempre varrido, incluindo operadores de exibição de texto e seleções de fonte locais do recurso

IncludeFormXObjects inclui recursivamente Form XObjects invocados com recursos herdados, detecção de ciclo e profundidade de aninhamento limitada

IncludeAnnotationAppearances inclui appearances normal, rollover e down, bem como dicionários de estado, e também segue Form XObjects usados por essas appearances quando habilitado

Cada código de caractere segue a sua codificação declarada, depois qualquer Type0 CMap e CIDToGIDMap, antes de chegar ao ID de glifo incorporado estável; os mapas CID existentes e os dados ToUnicode não são renumerados

Glifos compostos TrueType retêm o seu fecho recursivo de componentes, enquanto camadas COLR v0 e dependências de pintura de glifos COLR v1 retêm cada contorno referenciado

Fontes simples Type 1 seguem a codificação Standard, WinAnsi, MacRoman ou MacExpert mais Differences e depois reescrevem CharStrings não usadas em dados PFB, binário dividido de PDF ou PFA hexa, sem alterar o layout do stream incorporado

Opções

FieldDefaultMeaning
MinimumSavingsBytes1Redução mínima do stream codificado exigida antes que um candidato seja adotado
EnforceSignaturePermissionsTrueRecusa qualquer reescrita quando o documento contém um campo de assinatura
IncludeFormXObjectsTrueRastreia Form XObjects aninhados invocados
IncludeAnnotationAppearancesTrueRastreia appearance streams e estados de anotações

Resultado e segurança

O valor de retorno é o número de programas de fonte incorporados reescritos, enquanto AInfo relata cobertura da varredura, falhas de mapeamento ou decodificação, glifos usados, economia de bytes e consequências de assinatura

Um programa de fonte permanece byte a byte inalterado quando qualquer código alcançável não pode ser mapeado, o formato dele não tem suporte, o subsetting falha ou o candidato codificado não atinge o limite de economia

A reescrita Type 1 falha de forma fechada para múltiplos segmentos PFB binários, uma codificação explícita de fonte simples não analisável, um nome de glifo solicitado ausente ou um layout de CharString sem suporte; versões COLR desconhecidas e programas sfnt sem tabelas de contorno esparsas também permanecem inalterados

Todos os candidatos são analisados antes da mutação, e a política de assinatura padrão retorna zero com RefusedBySignaturePolicy definido; desabilitar a política permite a reescrita e define SignaturesInvalidated sempre que um documento assinado muda

Exemplo

var
  Info: THPDFLoadedFontSubsetInfo;
begin
  PDF.LoadFromFile('input.pdf');
  if PDF.SubsetLoadedFonts(Info) > 0 then
    PDF.SaveToFile('subset.pdf');
end;

Resource and Image Optimisation