Cache persistente de subconjuntos de tipos de letra
A cache persistente de subconjuntos de tipos de letra evita repetir o subsetting dispendioso de TrueType ou OpenType quando documentos posteriores usam o mesmo conteúdo de fonte e o mesmo conjunto de glifos
Configuration
property FontSubsetCacheFolder: AnsiString;
property FontSubsetCacheMaxBytes: Int64;
function GetFontSubsetCacheInfo: THPDFFontSubsetCacheInfo;
procedure ClearFontSubsetCache;
Um vazio FontSubsetCacheFolder disables disk caching without changing font output
FontSubsetCacheMaxBytes tem por predefinição 256 MiB e pode ser reduzido em runtime, o que dispara de imediato a remoção pelo critério least-recently-used
Estatísticas
THPDFFontSubsetCacheInfo contains HitCount, MissCount, WriteCount, EvictionCount, CorruptCount, RejectedCount, WriteFailureCount, CurrentBytes, and FileCount
Correctness and recovery
- Só há acerto na cache quando o conteúdo da fonte, os glifos usados, o modo de subset e o schema da cache coincidem
- As entradas de subset compacto mantêm os dados de remapeamento de CID exigidos pelos dicionários de fontes PDF/A
- As entradas malformadas ou truncadas são rejeitadas e removidas antes de o subset poder chegar a um stream PDF
- As falhas da cache recorrem ao subsetting normal em memória e nunca impedem a geração do documento
- A substituição atómica impede que os leitores observem uma entrada escrita parcialmente
Exemplo
var
Info: THPDFFontSubsetCacheInfo;
begin
PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;
{ create documents that use embedded TrueType or OpenType fonts }
Info := PDF.GetFontSubsetCacheInfo;
end;