PDFium Delphi Component 文件

ConfigureSystemFontProvider 过程

单元: PDFium

语法

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

请在 ClearSystemFontProvider 之前调用 UnloadLibrary

清除操作会重置提供方、策略、缓存和统计信息

在 PDFium 仍处于加载状态时调用会抛出 EPdfError

示例

var
  Policy: TPdfSystemFontPolicy;
begin
  UnloadLibrary;
  Policy := TPdfSystemFontPolicy.Default;
  Policy.AllowDefaultFallback := False;
  ConfigureSystemFontProvider(MyFontProvider, Policy);
  LoadLibrary;
end;

参见

ConfigureSystemFontCacheGovernor, FPdfCache, LoadLibrary, UnloadLibrary, AddCidType2Text