Persistenter Font-Subset-Cache
Der persistente Font-Subset-Cache vermeidet wiederholtes aufwendiges Subsetting von TrueType oder OpenType, wenn spätere Dokumente denselben Fontinhalt und dieselbe Glyphenmenge verwenden
Konfiguration
property FontSubsetCacheFolder: AnsiString;
property FontSubsetCacheMaxBytes: Int64;
function GetFontSubsetCacheInfo: THPDFFontSubsetCacheInfo;
procedure ClearFontSubsetCache;
Ein leeres FontSubsetCacheFolder deaktiviert das Festplatten-Caching, ohne die Fontausgabe zu ändern
FontSubsetCacheMaxBytes ist standardmäßig 256 MiB groß und kann zur Laufzeit reduziert werden, was eine sofortige Verdrängung nach dem Least-Recently-Used-Prinzip auslöst
Statistik
THPDFFontSubsetCacheInfo enthält HitCount, MissCount, WriteCount, EvictionCount, CorruptCount, RejectedCount, WriteFailureCount, CurrentBytes und FileCount
Korrektheit und Wiederherstellung
- Ein Cache-Treffer ist nur möglich, wenn Fontinhalt, verwendete Glyphen, Subset-Modus und Cacheschema übereinstimmen
- Kompakte Subset-Einträge bewahren die für PDF/A- Fontwörterbücher erforderlichen CID-Neuzuordnungsdaten
- Fehlgeformte oder abgeschnittene Einträge werden zurückgewiesen und entfernt, bevor das Subset einen PDF-Stream erreichen kann
- Cachefehler fallen auf normales In-Memory-Subsetting zurück und verhindern niemals die Dokumenterzeugung
- Atomisches Ersetzen verhindert, dass Leser einen teilweise geschriebenen Eintrag beobachten
Beispiel
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;