问题描述
OpenType documentation 声明对于类型 4.1(标记到基附件定位)的 GPOS 查找,应用程序必须执行以下操作:
要识别与标记组合的基本字形, 文本处理客户端必须在字形字符串中向后看 标记到前面的基本字形。
但我需要回头看多远?这总是前面的字符吗?或者我是否需要跳过标记覆盖表中的所有字形?还是返回直到我在基本覆盖表中找到一个字形?
解决方法
MarkBasePosFormat1 表有一个基本覆盖子表,用于指定一组要匹配的字形。在确定给定的查找是否适用时,您希望匹配以基本覆盖率子表中指定的字形之一开头的字形序列。
从另一个方向开始,从标记向后,您可以跳过在 GDEF 表的 Glyph Class Definition 子表中标识为标记字形的任何字形。当您找到候选字形时,您需要检查它是否包含在基本覆盖表中。
我看到 Harfbuzz implementation 在向后扫描时会检查其他一些细节,您可能需要检查:在 MarkBasePosFormat1 结构中查找 apply 方法。 (我并不是说 Harfbuzz 是定义规范意图的参考实现;但它被广泛使用并作为开源提供。)