带有 HarfBuzz 渲染器的 luahbtex 是否完全支持数学格式?

带有 HarfBuzz 渲染器的 luahbtex 是否完全支持数学格式?

我目前正在尝试使用 TeXLive 2020 中的新 HarfBuzz 渲染器(使用 LuaHBTeX v. 1.12.0)和 STIX2 组(serif/math)字体。

使用我的主要字体进行渲染似乎没问题(而且我可以确认mode=harf它在日志文件中使用)。

但数学字体的渲染存在问题:上标和分数线缺失或放错位置。

这是 Harfbuzz 渲染器已知的当前限制吗?


编辑

正如下面的评论所说,HarfBuzz 渲染器根本不支持数学,因为数学布局总是由引擎本身完成,而且 HarfBuzz 似乎不提供数学参数(见https://github.com/latex3/luaotfload/issues/141#issuecomment-609932891)。

Harfbuzz 似乎与数学布局没有任何关系(见说明),尽管它可能能够提供 OpenType 字体的布局信息(但可能非常有限):https://harfbuzz.github.io/harfbuzz-hb-ot-math.html

答案1

简洁版本

在 LuaLaTex 中,HarfBuzz 渲染器不支持数学字体,并且可能不会支持。只需使用该Base模式即可。

长版本

正如您在问题中链接的页面所述:

HarfBuzz 本身并没有实现数学排版解决方案,所提供的函数和类型可供客户端程序访问排版 OpenType Math 排版所需的字体数据。

因此,我们用 HarfBuzz 能做的唯一一件事就是从字体文件中提取一些数学参数。鉴于相同的参数已经被当前提取base,并且node加载器提取了不需要在这里使用 HarfBuzz。

此外,使用这些值时,我们还会遇到一个特殊问题:对于“MathKern”(下标和上标的特殊字距调整值),OpenType 字体中有一个表,对于每个高度,都可以根据简单的算法选择一个值。此查找是在 LuaTeX 中实现的,因此我们只需将字体中的原始表提供给 LuaTeX。这在 HarfBuzz 中实际上不可用,因为 HarfBuzz 也在实现查找算法,而不是提供原始表。因此 HarfBuzz提供数学布局所需的所有数据,但它的解释太多,无法在 LuaTeX 中使用。如果我们仍想使用它,就必须从 Lua 解析原始 OpenType 文件,这只会重新实现base字体加载器的部分功能。

(此外还有一个小问题,数学 OpenType 函数没有被 Lua 包装器公开,所以我们需要先扩展它才能在这里使用 HarfBuzz。)

所以总的来说,我们无法轻松地使用 HarfBuzz 实现数学字体,而且也没有理由在这方面投入更多的工作。

相关内容