提问人:Lennard Grimm 提问时间:3/17/2022 更新时间:3/18/2022 访问量:200
获取受 OpenType 功能影响的特定字形
Get specific Glyphs affected by OpenType feature
问:
我目前正在尝试为字体创建一个概述,显示所有字形及其替代项。为此,我使用opentype.js来提取所有必要的信息。我一直在研究这些功能列表和查找,但我还不能了解它们是如何工作的。
具体来说,例如,我想获取启用“ss01”时更改的所有字形。
任何存储该信息的指针,或者是否有任何库可以帮助我,我们将不胜感激!
答:
在字体中,该日期存储在 GSUB 表中,特别是在查找子表中。查找子表可以是不同的类型,它们是不同类型的替换(请参阅 https://learn.microsoft.com/en-us/typography/opentype/spec/gsub#table-organization 中的 GSUB 查找类型枚举),并且使用不同的格式来表示数据。
像“ss01”这样的功能通常会使用类型 1 查找子表,这些子表是单一替换:将一个字形替换为一个字形。类型 1 查找子表使用两种简单格式(GSUB 查找类型中最简单的格式)表示。这两种格式的不同之处在于它们如何表示替换输出的字形;两者都使用覆盖率子表来描述输入,即被替换的字形集。可以使用两种格式表示覆盖率表,但这两种格式表示相同的概念信息:一组字形。因此,在类型 1 查找子表的覆盖率表中获取字形将回答您的问题......对于该查找类型。
没有什么可以阻止字体开发人员对“ss01”使用其他基本查找类型——多重替换(一对多,类型 2)、备用替换(一对多,类型 3)或连字替换(多对一,类型 4)——尽管对于“ss01”,这可能不太可能。但是,也有上下文替换类型(如果在匹配的字形序列上下文中,则替换字形),在这些情况下,格式更复杂,获取所需信息将不那么简单。所有这些类型都具有覆盖率表,这些表指示输入序列中执行操作的第一个字形,尽管该字形实际上可能未被执行。除非您能找到已经解决此问题的库,否则您需要熟悉所有这些查找子表类型。
评论