THotPDF GPOS Kerning and Placement Methods

THotPDF API reference

 

THotPDF Methods  Auto Shaping  GSUB

Documents HotPDF's GPOS pair-kerning, contextual kerning, vertical kerning, cursive-anchor, mark-positioning, and mark-to-ligature queries plus the ShapingFeatures flags that apply them during text output

function ApplyMarkToLigatureShaping(const Wide: UnicodeString): UnicodeString;

 

Delphi syntax

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;

 

Covered APIs

APIUsage notes
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
ApplyMarkToLigatureShapingRecords ligature component data for mark-to-ligature placement
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
sfVerticalKerningEnables GPOS vkrn and vpal vertical advance adjustment in the vertical text output path

 

Usage notes

Pair kerning returns signed advance and placement adjustments in a 1000-unit em. Contextual kerning resolves Type 7 and Type 8 lookups across a glyph run. Mark positioning covers Mark-to-Base, Mark-to-Mark, and Mark-to-Ligature anchors. The emit path applies these only when sfKerning, sfMarkPositioning, or sfVerticalKerning is enabled

 

See also: ShapingFeatures OpenType GSUB Engine Automatic Shaping Pipeline