OpenType GSUB Substitution Engine

Glyph substitution capability surface (v2.119.43 - v2.119.50)

 

Arabic Shaping  CFF / OpenType Subsetting

OpenType GSUB (Glyph SUBstitution) engine ภายใน HotPDF ช่วยให้ callers query, drive และ embed glyph substitution ทุกชนิดที่ OpenType font ประกาศไว้ เช่น ligatures, stylistic alternates, contextual variants, Arabic / Indic shaping forms, CJK alternate forms และอื่น ๆ LookupType 1 ถึง 8 ของ OpenType GSUB ทั้งหมดถูก implement และเปิดเป็น capability-only query surface; caller เป็นผู้ขับการ emit ข้อความและตัดสินใจว่าจะเขียน substitute glyph ใดลงใน page content stream

 

Public API

type

  TGSUBStringArray = array of AnsiString;

 

// LookupType 1 - Single Substitution (one glyph -> one glyph)

function GetSingleSubstituteGlyph(InputGID: Word; const FeatureTag: AnsiString): Word;

 

// LookupType 2 - Multiple Substitution (one glyph -> sequence of glyphs)

function GetMultipleSubstituteGlyphs(InputGID: Word; const FeatureTag: AnsiString;

  var OutGIDs: array of Word): Boolean;

 

// LookupType 3 - Alternate Substitution (one glyph -> one of N alternates)

function GetAlternateGlyphCount(InputGID: Word; const FeatureTag: AnsiString): Integer;

function GetAlternateGlyph(InputGID: Word; const FeatureTag: AnsiString;

  AlternateIndex: Integer): Word;

 

// LookupType 4 - Ligature Substitution (N glyphs -> one ligature)

function ApplyLigatureSubstitution(const InputGIDs: array of Word;

  StartIndex: Integer; const FeatureTag: AnsiString;

  out OutGID: Word; out ConsumedCount: Integer): Boolean;

 

// LookupType 5 + 6 - Contextual / Chained Contextual Substitution

function ApplyContextualSubst(const InputGIDs: array of Word;

  StartIndex: Integer; const FeatureTag: AnsiString;

  var OutGIDs: array of Word;

  out ConsumedLen: Integer): Boolean;

 

// LookupType 8 - Reverse Chained Contextual Single Substitution

function ApplyReverseChainedContextualSubst(const InputGIDs: array of Word;

  StartIndex: Integer; const FeatureTag: AnsiString;

  out OutGID: Word): Boolean;

 

// Script / LangSys selection (Phase 7)

procedure SetGSUBScript(const ScriptTag: AnsiString);

procedure SetGSUBLanguage(const LangTag: AnsiString);

function GetGSUBScripts: TGSUBStringArray;

function GetGSUBLanguages(const ScriptTag: AnsiString): TGSUBStringArray;

function GetGSUBFeatures(const ScriptTag, LangTag: AnsiString): TGSUBStringArray;

 

// TTF subsetter closure (Phase 9)

procedure MarkUnicodeGlyphUsed(GID: Word);

 

คำอธิบาย

API สาธารณะ วิธีที่ผู้เรียกใช้ขับเคลื่อน ข้อกำหนดของฟอนต์ ดูเพิ่มเติม: ไปป์ไลน์การจัดรูปอัตโนมัติ (Phase 8), THotPDF.AssignSyntheticCodepointForGID, THotPDF.SetGSUBScript, การทำชุดย่อยฟอนต์ CFF / OpenType