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
| Field | Default | Meaning |
|---|---|---|
MinimumSavingsBytes | 1 | Redução mínima do stream codificado exigida antes que um candidato seja adotado |
EnforceSignaturePermissions | True | Recusa qualquer reescrita quando o documento contém um campo de assinatura |
IncludeFormXObjects | True | Rastreia Form XObjects aninhados invocados |
IncludeAnnotationAppearances | True | Rastreia 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;