procedure ConfigureSystemFontProvider(const Provider: IPdfSystemFontProvider; const Policy: TPdfSystemFontPolicy);
通过 PDFium 原生系统字体回调接口安装进程级的应用程序字体映射器
请在第一次 LoadLibrary 之前或打开任何 TPdf 文档之前调用
在 PDFium 已加载时调用会抛出 EPdfError,从而确保原生字体句柄绝不会比其提供方配置存活得更久
IPdfSystemFontProvider.ResolveFont 接收请求的字体名称、字重、斜体状态、字符集和字族
返回 True 时需提供字体名称、完整的 TrueType、TrueType Collection 或 OpenType 字节数组、字符集以及可选的 TTC 索引
提供方可能在 PDFium 工作线程上运行,因此必须是线程安全的
异常会在原生回调边界被拦截,并按失败的提供方响应处理
TPdfSystemFontPolicy.Default 允许原生回退与字体替换,将每个提供的字体限制在 64 MiB 以内,并在有界 LRU 缓存中最多保留 32 个请求结果
当缺失字体的每一次决策都必须由应用程序做出时,将 AllowDefaultFallback 设为 False
将 AllowFaceSubstitution 设为 False 可拒绝字体名称与请求名称不一致的响应
MaxCacheEntries 为零时禁用请求缓存
ConfigureSystemFontCacheGovernor 还可以进一步将保留的字体字节纳入跨缓存的共享预算
GetSystemFontProviderStatistics 返回 TPdfSystemFontStatistics 快照,涵盖 Configured、Installed、MapRequests、CacheHits、ProviderHits、DefaultFallbackHits、RejectedProviderResponses、FailedRequests、FontDataRequests、ActiveHandles、CachedFonts、CachedFontBytes 和 CacheEvictions
在 PDFium 渲染期间查询该快照是安全的
请在 ClearSystemFontProvider 之前调用 UnloadLibrary
清除操作会重置提供方、策略、缓存和统计信息
在 PDFium 仍处于加载状态时调用会抛出 EPdfError
var
Policy: TPdfSystemFontPolicy;
begin
UnloadLibrary;
Policy := TPdfSystemFontPolicy.Default;
Policy.AllowDefaultFallback := False;
ConfigureSystemFontProvider(MyFontProvider, Policy);
LoadLibrary;
end;