Cache persistente de subsets de fuentes
El cache persistente de subsets de fuentes evita repetir el subsetting costoso de TrueType u OpenType cuando documentos posteriores usan el mismo contenido de fuente y el mismo conjunto de glifos
Configuración
property FontSubsetCacheFolder: AnsiString;
property FontSubsetCacheMaxBytes: Int64;
function GetFontSubsetCacheInfo: THPDFFontSubsetCacheInfo;
procedure ClearFontSubsetCache;
Un FontSubsetCacheFolder vacío deshabilita el cache en disco sin cambiar la salida de fuentes
FontSubsetCacheMaxBytes tiene un predeterminado de 256 MiB y puede reducirse en runtime, lo que dispara una eviction least-recently-used inmediata
Estadísticas
THPDFFontSubsetCacheInfo contiene HitCount, MissCount, WriteCount, EvictionCount, CorruptCount, RejectedCount, WriteFailureCount, CurrentBytes y FileCount
Corrección y recuperación
- Un cache hit solo es posible cuando el contenido de la fuente, los glifos usados, el modo de subset y el schema del cache coinciden todos
- Las entradas compactas de subset conservan los datos de remapeo CID que exigen los diccionarios de fuentes PDF/A
- Las entradas malformadas o truncadas se rechazan y se eliminan antes de que el subset pueda llegar a un stream PDF
- Los fallos del cache hacen fallback al subsetting normal en memoria y nunca impiden la generación del documento
- El reemplazo atómico evita que los lectores observen una entrada escrita parcialmente
Ejemplo
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;