THotPDF GPOS カーニングおよび配置メソッド

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 フォントが GPOS カーニング lookup を公開しているかを報告します
GetGPOSPairAdjustment順序付きグリフペアの符号付き advance 調整を返し、オーバーロードでは配置を考慮した X/Y オフセットも返せます
GetGPOSContextualKernRunグリフ列に対して GPOS Type 7 と Type 8 の配置規則を解決し、グリフごとの文脈カーニング調整を返します
HasGPOSVerticalKern登録された Unicode フォントが縦書きカーニングまたは縦方向比例調整 lookup を公開しているかを報告します
GetGPOSVerticalKern順序付きグリフペアに対し、vkrn または vpal lookup から符号付き縦方向 YAdvance 調整を返します
GetGPOSMarkOffsetマークグリフをベースグリフに接続する Mark-to-Base 配置オフセットを返します
GetGPOSMarkMarkOffsetあるマークグリフを別のマークグリフに重ねる Mark-to-Mark 配置オフセットを返します
HasGPOSCursive登録された Unicode フォントが GPOS 筆記体接続 lookup を公開しているかを報告します
GetGPOSCursiveAnchorsフォントが筆記体接続規則を提供する場合、グリフの入口および出口の筆記体アンカーを返します
GetGPOSMarkToLigatureOffsetマークを特定のリガチャコンポーネントに接続する Mark-to-Ligature 配置オフセットを返します
GetGPOSLigatureComponentCountリガチャグリフに記録されたマーク接続コンポーネント数を返し、呼び出し側が GetGPOSMarkToLigatureOffset の前に有効な ComponentIndex を選べるようにします
ApplyMarkToLigatureShapingテキスト出力中に mark-to-ligature オフセットを適用できるよう、リガチャコンポーネントの所有関係を記録します
sfKerning左から右の Unicode テキスト出力で GPOS ペアカーニング調整を有効にします
sfMarkPositioning結合マークに対する GPOS Mark-to-Base と Mark-to-Mark オフセットを有効にします
sfMarkToLigature個々のリガチャコンポーネントに付くマークに対する GPOS Mark-to-Ligature オフセットを有効にします
sfCursiveAttachmentUnicode テキスト出力中に GPOS 筆記体の入口/出口アンカー整列を有効にします。sfArabicGSUB でシェーピングされた右から左のアラビア語 run も含みます
sfVerticalKerning縦書きテキスト出力パスで GPOS vkrn と vpal の縦方向 advance 調整を有効にします

 

使用上の注意

ペアカーニングは 1000 ユニット em で符号付き advance および配置調整を返します。文脈カーニングはグリフ列上で Type 7 と Type 8 の lookup を解決します。マーク配置は Mark-to-Base、Mark-to-Mark、Mark-to-Ligature アンカーを対象にします。ApplyMarkToLigatureShaping は sfMarkToLigature が使用する run レベルのリガチャコンポーネントデータを準備します。筆記体接続は、あるグリフの出口アンカーを次のグリフの入口アンカーに整列します。これはネイティブ Arabic GSUB シェーピングが、それらのアンカーを持つフォント固有の文脈グリフ ID を生成した後に特に有用です。出力パスは対応するシェーピングフラグが有効な場合にのみこれらを適用します

 

関連項目: ShapingFeatures OpenType GSUB Engine Automatic Shaping Pipeline