Постоянный кеш сабсетов шрифтов
Постоянный кеш сабсетов шрифтов избавляет от повторения дорогого сабсеттинга TrueType или OpenType, когда последующие документы используют то же содержимое шрифта и тот же набор глифов
Конфигурация
property FontSubsetCacheFolder: AnsiString;
property FontSubsetCacheMaxBytes: Int64;
function GetFontSubsetCacheInfo: THPDFFontSubsetCacheInfo;
procedure ClearFontSubsetCache;
Пустой FontSubsetCacheFolder отключает дисковый кеш, не меняя шрифтовый вывод
FontSubsetCacheMaxBytes по умолчанию равен 256 MiB и может быть уменьшен во время выполнения — это немедленно запускает вытеснение по LRU
Статистика
THPDFFontSubsetCacheInfo содержит HitCount, MissCount, WriteCount, EvictionCount, CorruptCount, RejectedCount, WriteFailureCount, CurrentBytes и FileCount
Корректность и восстановление
- Попадание в кеш возможно, только когда совпадают содержимое шрифта, используемые глифы, режим сабсета и схема кеша
- Компактные записи сабсетов сохраняют данные CID-перекодировки, которые требуются словарям шрифтов PDF/A
- Повреждённые или обрезанные записи отклоняются и удаляются до того, как сабсет попадёт в PDF stream
- Сбои кеша откатываются к обычному сабсеттингу в памяти и никогда не блокируют генерацию документа
- Атомарная замена не позволяет читателям увидеть частично записанную запись
Пример
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;