Методы кернинга и позиционирования GPOS THotPDF

THotPDF Справочник API

 

Методы THotPDF  Автоматическое формирование  GSUB

Документирует запросы HotPDF для парного кернинга GPOS, контекстного кернинга, вертикального кернинга, курсивных якорей, позиционирования отметок и mark-to-ligature, а также флаги ShapingFeatures, применяющие их при выводе текста

 

Синтаксис 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;

 

Охваченные API

APIПримечания по использованию
HasGPOSKerningСообщает, предоставляет ли зарегистрированный Unicode-шрифт lookup GPOS для кернинга
GetGPOSPairAdjustmentВозвращает знаковую коррекцию advance для упорядоченной пары глифов и через перегрузку может вернуть X/Y-смещения с учетом позиционирования
GetGPOSContextualKernRunВозвращает контекстные корректировки кернинга по глифам, разрешая правила позиционирования GPOS Type 7 и Type 8 на последовательности глифов
HasGPOSVerticalKernСообщает, предоставляет ли зарегистрированный Unicode-шрифт вертикальный кернинг или lookup вертикальной пропорциональной коррекции
GetGPOSVerticalKernВозвращает знаковую вертикальную коррекцию YAdvance из lookup vkrn или vpal для упорядоченной пары глифов
GetGPOSMarkOffsetВозвращает смещения Mark-to-Base для прикрепления глифа отметки к базовому глифу
GetGPOSMarkMarkOffsetВозвращает смещения Mark-to-Mark для наложения одного глифа отметки на другой
HasGPOSCursiveСообщает, предоставляет ли зарегистрированный Unicode-шрифт lookup GPOS для курсивного соединения
GetGPOSCursiveAnchorsВозвращает входные и выходные курсивные якоря для глифа, когда шрифт предоставляет правило курсивного соединения
GetGPOSMarkToLigatureOffsetВозвращает смещения Mark-to-Ligature для прикрепления отметки к конкретному компоненту лигатуры
GetGPOSLigatureComponentCountВозвращает число компонентов прикрепления отметок, записанных для глифа лигатуры, чтобы вызывающий код мог выбрать допустимый ComponentIndex перед GetGPOSMarkToLigatureOffset
ApplyMarkToLigatureShapingЗаписывает принадлежность компонентов лигатуры, чтобы смещения mark-to-ligature можно было применять при выводе текста
sfKerningВключает корректировки парного кернинга GPOS при выводе Unicode-текста слева направо
sfMarkPositioningВключает смещения GPOS Mark-to-Base и Mark-to-Mark для комбинируемых отметок
sfMarkToLigatureВключает смещения GPOS Mark-to-Ligature для отметок, прикрепленных к отдельным компонентам лигатуры
sfCursiveAttachmentВключает выравнивание входных и выходных курсивных якорей GPOS при выводе Unicode-текста, включая арабские последовательности справа налево, сформированные sfArabicGSUB
sfVerticalKerningВключает вертикальную корректировку advance GPOS vkrn и vpal в пути вертикального вывода текста

 

Примечания по использованию

Парный кернинг возвращает знаковые корректировки advance и позиционирования в em из 1000 единиц. Контекстный кернинг разрешает lookup Type 7 и Type 8 на последовательности глифов. Позиционирование отметок охватывает якоря Mark-to-Base, Mark-to-Mark и Mark-to-Ligature. ApplyMarkToLigatureShaping подготавливает данные компонентов лигатуры на уровне последовательности, используемые sfMarkToLigature. Курсивное соединение выравнивает выходной якорь одного глифа с входным якорем следующего, что особенно полезно после того, как нативное формирование Arabic GSUB создало специфичные для шрифта контекстные ID глифов с этими якорями. Путь вывода применяет эти корректировки только при включенном соответствующем флаге формирования

 

См. также: ShapingFeatures OpenType GSUB Engine Automatic Shaping Pipeline