我正在使用 Harfbuzz 和 Freetype 来渲染文本。在韩语中,当某些竖排文本中有一些英文文本时,应将其水平渲染然后旋转 90 度。像这样:
因此,为了尝试实现这一目标,我使用 Harfbuzz 塑造了两段文本。一个是垂直的,一个是水平的。然后,我将水平文本旋转了 90 度。这就是我得到的:
您可以看到问题是水平文本与垂直文本不一致。这是因为竖排文本有一个负值
x_offset
,以便所有字符完美对齐。如果我忽略 x_offset
这就是我得到的:
现在两条线段已正确对齐,但是现在垂直文本当然不正确,因为我忽略了
x_offset
。
如果我可以反转
x_offset
的方向,那么结果就是我想要的。不幸的是,我不知道 freetype 字体的属性或 harfbuzz 中是否有与我需要在相反方向执行 x_offset
的宽度相对应的属性。
我可能只是错过了一些简单的东西,但有人知道我该怎么做吗?
我认为正确的做法是从水平文本中减去
descender
字体大小。本质上,由于我们垂直渲染文本,因此使用下降部分是没有意义的。