fontspec lualatex 中的 FakeBold,使用的方法?

fontspec lualatex 中的 FakeBold,使用的方法?

如果我是一个还算不错的程序员,我会研究一下这段代码。但我并不是这样的......

即使不知道算法,我相信fontspecFakeStretch 和 FakeSlant 不太可能在字形轮廓中引入矢量绘制错误。这些可以通过相对简单的线性变换来实现。

但我对 FakeBold 并不自信。例如,FontForge 字体编辑器有加粗字形的菜单。它的算法有问题,即使在 OpenType 字体中只使用 PostScript 轮廓,也会在某些字形中引入矢量绘制错误(或意外更改)。这是我的经验之谈。我的工作流程不喜欢矢量错误,我通常必须在使用字体之前先检查字体(通过 FontForge)。

所以,我的问题是:fontspecFakeBold 能做什么?如果它复制一个字形,并以轻微偏移的方式重叠副本,那么这对我的工作流程来说会是个问题(对其他人来说可能不是问题)。如果它将字形控制点从填充的中心线移开,而不添加新的控制点,然后删除任何生成的重叠,那么这可能是好的。还有其他可能性。

我注意到这些功能的可用性取决于编译器和版本的最新程度。我只使用lualatex

编辑:评论就够了。我可以从那里开始。不需要进一步回答,但我会把问题留下来,以防其他人感兴趣。

编辑 2:正如我上面提到的,FontForge 使用的(当前)加粗字符的方法似乎存在一些问题。根据评论,我在 FontForge 中尝试了以下方法:将可能难以理解的字符复制到背景。以合理的量描边前景。将背景合并到前景中。消除重叠。一些测试显示一切正常。虽然这与实际操作并不完全相同fontspec,但非常相似。我得出结论,FakeBold 的风险可能很低。我还没有机会通过最严格的 PDF/X 标准来检查这一点,但我希望它会通过。但是,我不使用字形整形(例如阿拉伯语),所以我不知道那里会发生什么。

相关内容