PDFium Delphi Component Docs

โพรซีเยอร์ ConfigureSystemFontProvider

Unit: PDFium

Syntax

procedure ConfigureSystemFontProvider(const Provider: IPdfSystemFontProvider; const Policy: TPdfSystemFontPolicy);

Description

ติดตั้ง font mapper ของแอปพลิเคชันระดับโปรเซสผ่าน callback interface ของ system-font ระดับ native ใน PDFium

เรียกก่อน LoadLibrary ครั้งแรกหรือก่อนเปิดเอกสาร TPdf ใด ๆ

เรียกขณะที่ PDFium โหลดอยู่จะ raise EPdfError เพื่อไม่ให้ font handle ระดับ native มีอายุยาวกว่าการตั้งค่า provider ของมันเด็ดขาด

Provider contract

IPdfSystemFontProvider.ResolveFont รับ face น้ำหนัก สถานะ italic charset และ pitch family ที่ร้องขอ

คืน True พร้อมชื่อ face อาร์เรย์ไบต์ TrueType เต็มรูปแบบ TrueType Collection หรือ OpenType charset และ TTC index เสริมได้

provider อาจทำงานบน worker thread ของ PDFium จึงต้องเป็น thread-safe

exception ถูกกักไว้ที่ขอบเขต callback ระดับ native และถูกนับเป็นการตอบกลับของ provider ที่ล้มเหลว

Policy and caching

TPdfSystemFontPolicy.Default อนุญาต fallback ระดับ native และการแทน face จำกัดฟอนต์ที่ส่งมอบให้แต่ละตัวไม่เกิน 64 MiB และเก็บผลลัพธ์คำขอได้ถึง 32 รายการใน LRU cache แบบมีขอบเขต

ตั้ง AllowDefaultFallback เป็น False เมื่อการตัดสินใจทุกครั้งเรื่องฟอนต์ที่หาไม่เจอต้องเป็นของแอปพลิเคชันเอง

ตั้ง AllowFaceSubstitution เป็น False เพื่อปฏิเสธการตอบกลับที่ชื่อ face ต่างจากชื่อที่ร้องขอ

MaxCacheEntries เป็นศูนย์จะปิดการแคชคำขอ

ConfigureSystemFontCacheGovernor ใส่ไบต์ฟอนต์ที่เก็บไว้ใต้งบ cache ใช้ร่วมกันข้าม cache ได้เพิ่มอีกชั้นหนึ่ง

Statistics

GetSystemFontProviderStatistics คืน snapshot TPdfSystemFontStatistics ครอบคลุม Configured, Installed, MapRequests, CacheHits, ProviderHits, DefaultFallbackHits, RejectedProviderResponses, FailedRequests, FontDataRequests, ActiveHandles, CachedFonts, CachedFontBytes และ CacheEvictions

query snapshot ได้อย่างปลอดภัยขณะ PDFium กำลังเรนเดอร์

ClearSystemFontProvider

เรียก UnloadLibrary ก่อน ClearSystemFontProvider

การล้างจะ reset provider นโยบาย cache และสถิติ

เรียกขณะที่ PDFium ยังโหลดอยู่จะ raise EPdfError

Example

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

See Also

ConfigureSystemFontCacheGovernor, FPdfCache, LoadLibrary, UnloadLibrary, AddCidType2Text