如何在 OpenType GPOS 查找格式 4.1 中找到基本字符?

问题描述

OpenType documentation 声明对于类型 4.1(标记到基附件定位)的 GPOS 查找,应用程序必须执行以下操作:

要识别与标记组合的基本字形, 文本处理客户端必须在字形字符串中向后看 标记到前面的基本字形。

但我需要回头看多远?这总是前面的字符吗?或者我是否需要跳过标记覆盖表中的所有字形?还是返回直到我在基本覆盖表中找到一个字形?

解决方法

MarkBasePosFormat1 表有一个基本覆盖子表,用于指定一组要匹配的字形。在确定给定的查找是否适用时,您希望匹配以基本覆盖率子表中指定的字形之一开头的字形序列。

从另一个方向开始,从标记向后,您可以跳过在 GDEF 表的 Glyph Class Definition 子表中标识为标记字形的任何字形。当您找到候选字形时,您需要检查它是否包含在基本覆盖表中。

我看到 Harfbuzz implementation 在向后扫描时会检查其他一些细节,您可能需要检查:在 MarkBasePosFormat1 结构中查找 apply 方法。 (我并不是说 Harfbuzz 是定义规范意图的参考实现;但它被广泛使用并作为开源提供。)