function AddCidType2Text(const FontData: TBytes; const Glyphs: TPdfCidGlyphs; FontSize: Single; X, Y: Double; const Options: TPdfCidFontOptions; out Report: TPdfCidFontReport; Color: TColor = clBlack; Alpha: Byte = $FF): Boolean;
โหลดข้อมูล TrueType หรือ TrueType Collection ที่ผู้เรียกจัดหาผ่านตัวโหลดฟอนต์ CID Type 2 แบบ native ของ PDFium แล้วต่อท้าย text object หนึ่งตัวหรือมากกว่าที่มีตำแหน่งกำกับลงบนหน้า active
TPdfCidGlyph แต่ละตัวให้ glyph identifier ของแหล่งที่มา, ข้อความ Unicode, advance และ offset แนวนอนหรือแนวตั้งเมื่อต้องการ
CID ที่รันต่อกันจะแยก glyph ที่ซ้ำกันออกจากกัน ทำให้ glyph identifier เดียวกันแบกการแมป Unicode cluster ที่ต่างกันได้
pcfemFull ฝังฟอนต์ที่เลือกทั้งฉบับ, pcfemSubsetPreferred ลองทำ subset ตามรายการ glyph แล้ว fallback ไปใช้ฟอนต์ฉบับเต็ม และ pcfemSubsetRequired ปฏิเสธ operation หากผลิต subset ที่ปลอดภัยไม่ได้
การทำ subset จะคง glyph ศูนย์ไว้เสมอ ปฏิเสธเอาต์พุตที่ทำให้ฟอนต์โตขึ้น และตรวจว่า GID ต้นฉบับที่ขอมาทุกตัวยังอยู่จริงก่อนส่งข้อมูลให้ PDFium
TTCIndex เลือกสมาชิกหนึ่งตัวของ TrueType Collection และต้องเป็นศูนย์เมื่อเป็นฟอนต์เดี่ยว
ToUnicode CMap ที่สร้างขึ้นจะแมป CID ที่รันต่อกันทุกตัวไปยัง UnicodeText ที่ให้มา รวมถึงการแมปแบบ multi-code-unit ของ ligature และระนาบเสริม
การแมปที่ว่างเปล่าจะกลายเป็น U+200B เพื่อให้ทุก CID ยังสกัดออกมาและตรวจดูได้
เมื่อเปิด VerifyExtraction เมธอดจะเปิดโมเดลข้อความของหน้าซ้ำ อ่านเฉพาะอ็อบเจกต์ที่แทรกไป เทียบผลกับ ExpectedText แล้ว rollback อ็อบเจกต์ที่แทรกทั้งหมดเมื่อไม่ตรงกัน
TPdfCidFontOptions.Default เลือก pcfemSubsetPreferred เป็น EmbeddingMode เปิดการตรวจการสกัด จำกัดข้อมูลฟอนต์ที่ 64 MiB, glyph instance ที่ 65,534 และ MaxUnicodeCharacters ที่ 1,048,576 code unit Unicode ที่แมปไว้
TPdfCidFontReport บันทึกจำนวน glyph รวมกับ UniqueGlyphCount, OriginalFontBytes กับ EmbeddedFontBytes, SubsetAttempted, SubsetApplied, UsedFullFontFallback, SubsetErrorCode, FontEmbedded, ข้อความที่คาดและที่สกัดได้ และ ExtractionMatches
ตำแหน่ง glyph ถูกคำนวณในเวลาเชิงเส้น และ glyph ที่ใช้ baseline เดียวกันจะถูกปล่อยเป็น text object แบบ native หนึ่งตัว
กรณี offset แนวตั้งไม่เท่ากันจะใช้ text object แยกกัน พร้อมคงลำดับ object เชิงตรรกะไว้
การตรวจสอบกับการทำ subset เสร็จก่อนการแทรก และหากการเรียก native ใดล้มเหลวภายหลัง อ็อบเจกต์ที่การเรียกเพิ่มไปทุกตัวจะถูกถอดออกก่อนเนื้อหาหน้าถูก regenerate