THotPDF Shaping Subset and ToUnicode Mapping Methods

THotPDF API 参考

 

THotPDF Methods  Auto Shaping  GSUB

记录字形子集与 ToUnicode 管线,确保塑形后的 GID 能正确渲染和提取

 

Delphi 语法

procedure EnableShapingFeatureForSubset(const FeatureTag: AnsiString); overload;

procedure EnableShapingFeatureForSubset(Feature: THPDFShapingFeature); overload;

procedure MarkUnicodeGlyphUsed(GID: Word);

procedure RegisterToUnicodeReverseMapping(SubstCodepoint: Cardinal; const SourceCodepoints: array of Cardinal);

procedure ClearToUnicodeReverseMappings;

function ToUnicodeReverseMappingCount: Integer;

function AssignSyntheticCodepointForGID(GID: Word; out SyntheticCP: Word): Boolean;

function GetSyntheticCodepointForGID(GID: Word): Word;

procedure MarkSyntheticCpRTL(Cp: Word);

function IsRTLSyntheticCp(Cp: Word): Boolean;

function IsRTLSyntheticGID(GID: Word): Boolean;

 

涵盖的 API

API使用说明
EnableShapingFeatureForSubset标记那些输出字形必须保留在嵌入子集中的 GSUB 特性
MarkUnicodeGlyphUsed将返回的替代 GID 加入内嵌字体子集的闭包
RegisterToUnicodeReverseMapping注册替代码位到源码位的映射,用于文本提取和无障碍访问
ClearToUnicodeReverseMappings清除当前文档中调用方注册的所有反向映射
ToUnicodeReverseMappingCount返回已注册的反向映射数量
AssignSyntheticCodepointForGID分配一个私有区(private-use)合成码位,通过 CIDToGIDMap 渲染指定的字形 ID
GetSyntheticCodepointForGID返回已分配给某个字形 ID 的合成码位
MarkSyntheticCpRTL将某个合成码位标记为从右到左,以保证输出顺序正确
IsRTLSyntheticCp报告某个合成码点是否被标记为按从右到左输出
IsRTLSyntheticGID报告某个字形 ID 是否解析到被标记为从右到左输出的合成码点

 

使用说明

当 shaping 流程产出的字形 ID 无法通过常规 Unicode cmap 条目到达时,请使用这些 API。合成码位通过 CIDToGIDMap 渲染,反向映射则用于在文本提取时还原原始源码位

 

另请参阅: AssignSyntheticCodepointForGID GSUB lookup methods Indic shaping methods