記錄 HotPDF 的 GPOS pair-kerning、contextual kerning、vertical kerning、cursive-anchor、mark-positioning 與 mark-to-ligature queries,以及 text output 期間套用它們的 ShapingFeatures flags

THotPDF API reference

 

THotPDF Methods  Auto Shaping  GSUB

說明 HotPDF 的 GPOS pair-kerning、contextual kerning、vertical kerning、cursive-anchor、mark-positioning 與 mark-to-ligature queries,以及文字輸出期間套用它們的 ShapingFeatures flags

 

Delphi 語法

function HasGPOSKerning: Boolean;

function GetGPOSPairAdjustment(FirstGID, SecondGID: Word): Integer;

function GetGPOSPairAdjustment(FirstGID, SecondGID: Word; out AXPlacement, AYPlacement, AYAdvance: Integer): Integer;

function GetGPOSContextualKernRun(const GIDs: array of Word): TArray<Integer>;

function HasGPOSVerticalKern: Boolean;

function GetGPOSVerticalKern(FirstGID, SecondGID: Word): Integer;

function GetGPOSMarkOffset(BaseGID, MarkGID: Word; out DX, DY: Integer): Boolean;

function GetGPOSMarkMarkOffset(BaseMarkGID, AttachMarkGID: Word; out DX, DY: Integer): Boolean;

function HasGPOSCursive: Boolean;

function GetGPOSCursiveAnchors(GID: Word; out EntryX, EntryY, ExitX, ExitY: Integer; out HasEntry, HasExit: Boolean): Boolean;

function GetGPOSMarkToLigatureOffset(LigGID: Word; ComponentIndex: Integer; MarkGID: Word; out DX, DY: Integer): Boolean;

function GetGPOSLigatureComponentCount(LigGID: Word): Integer;

function ApplyMarkToLigatureShaping(const Wide: UnicodeString): UnicodeString;

 

Covered APIs

API使用注意事項
HasGPOSKerningReports whether the registered Unicode font exposes GPOS kerning lookups
GetGPOSPairAdjustmentReturns the signed advance adjustment for an ordered glyph pair and can also return placement-aware X/Y offsets through the overload
GetGPOSContextualKernRunReturns per-glyph contextual kern adjustments by resolving GPOS Type 7 and Type 8 positioning rules over a glyph run
HasGPOSVerticalKernReports whether the registered Unicode font exposes vertical kerning or vertical proportional adjustment lookups
GetGPOSVerticalKernReturns signed vertical YAdvance adjustment from vkrn or vpal lookups for an ordered glyph pair
GetGPOSMarkOffsetReturns Mark-to-Base placement offsets for attaching a mark glyph to a base glyph
GetGPOSMarkMarkOffsetReturns Mark-to-Mark placement offsets for stacking one mark glyph on another
HasGPOSCursiveReports whether the registered Unicode font exposes GPOS cursive attachment lookups
GetGPOSCursiveAnchorsReturns entry and exit cursive anchors for a glyph when the font supplies a cursive attachment rule
GetGPOSMarkToLigatureOffsetReturns Mark-to-Ligature placement offsets for attaching a mark to a specific ligature component
GetGPOSLigatureComponentCountReturns the number of mark-attachment components recorded for a ligature glyph so callers can choose a valid ComponentIndex before calling GetGPOSMarkToLigatureOffset
ApplyMarkToLigatureShapingRecords ligature component ownership so mark-to-ligature offsets can be applied during text emission
sfKerningEnables GPOS pair-kerning adjustments during left-to-right Unicode text emission
sfMarkPositioningEnables GPOS Mark-to-Base and Mark-to-Mark offsets for combining marks
sfMarkToLigatureEnables GPOS Mark-to-Ligature offsets for marks attached to individual ligature components
sfCursiveAttachmentEnables GPOS cursive entry/exit anchor alignment during Unicode text emission, including right-to-left Arabic runs shaped by sfArabicGSUB
sfVerticalKerningEnables GPOS vkrn and vpal vertical advance adjustment in the vertical text output path

 

使用注意事項

Pair kerning 會以 1000-unit em 傳回 signed advance 與 placement adjustments。Contextual kerning 會跨 glyph run 解析 Type 7 與 Type 8 lookups。Mark positioning 涵蓋 Mark-to-Base、Mark-to-Mark 與 Mark-to-Ligature anchors。ApplyMarkToLigatureShaping 會準備 sfMarkToLigature 使用的 run-level ligature component data。Cursive attachment 會將一個 glyph 的 exit anchor 對齊到下一個 glyph 的 entry anchor,這在 native Arabic GSUB shaping 已產生帶有這些 anchors 的 font-specific contextual glyph IDs 後最有用。emit path 只會在相符 shaping flag 啟用時套用這些項目

 

請參閱: ShapingFeatures OpenType GSUB Engine Automatic Shaping Pipeline