THotPDF.GetGPOSSingleAdjustment

THotPDF API 参考

 

THotPDF 方法  GPOS 方法  自动塑形

OpenType GPOS 单字形调整(LookupType 1)独立查询方法(v2.219.0)

 

Delphi 语法

function GetGPOSSingleAdjustment(GID: Word; const FeatureTag: AnsiString; out XPlacement, YPlacement: Integer; out XAdvance, YAdvance: Integer): Boolean;

 

说明

 

GetGPOSSingleAdjustment 查询指定 feature 对单个字形 GID 应用的每字形定位 / 步进调整(GPOS LookupType 1),将该 feature 下所有查找匹配的调整量加总后通过 XPlacement / YPlacement / XAdvance / YAdvance 输出(有符号,缩放至 1000 em 单位)。FeatureTag 为 4 字节 OpenType 标签(典型用例:'size' 光学尺寸、'vhal' 竖向半宽替换高度,或字体自定义的单字形定位特性)

 

当字体无 GPOS / 无对应 feature / 字形未被该 feature 覆盖时返回 False。可在 RegisterUnicodeTTF 之后任意时刻安全调用。内部二进制应用器(_GPOSApplySingle)已被上下文字距使用,本方法将其暴露为直接单字形查询接口,使调用方可独立应用 Type 1 定位,而不必触发完整的字距渲染路径

 

参数

パラメータ说明
GID要查询的字形 ID(需先通过 RegisterUnicodeTTF 注册字体)
FeatureTag4 字节 OpenType 特性标签,例如 'size'、'vhal'
XPlacement[out] X 轴定位调整(有符号,1000 em 缩放)
YPlacement[out] Y 轴定位调整(有符号,1000 em 缩放)
XAdvance[out] X 轴步进调整(有符号,1000 em 缩放)
YAdvance[out] Y 轴步进调整(有符号,1000 em 缩放)

 

返回值

True 表示找到匹配调整并填充了输出参数;False 表示无匹配(字体无 GPOS / 无对应 feature / 字形不在覆盖范围内)

 

代码示例

// 查询字形 42 在 'vhal' 特性下的步进调整
var
  XP, YP, XA, YA: Integer;
begin
  if HPDF.GetGPOSSingleAdjustment(42, 'vhal', XP, YP, XA, YA) then
  begin
    // XA / YA 为 1000 em 单位的步进调整量
    // 换算到当前字体大小:Adjust := XA * FontSize / 1000
  end;
end;

另请参阅: GPOS 方法汇总 GetGPOSPairAdjustment GetGPOSVerticalKern