【问题标题】:How should I vertically align glyphs with libraqm?我应该如何将字形与 libraqm 垂直对齐?
【发布时间】:2020-03-13 23:59:19
【问题描述】:

我已设法使用libraqm 获得正确的字形(字形整形),现在我需要进行字形连接以使字形正确连接。

我已经设法获得了正确的水平前进,使用:

advance = (glyphs[i].x_advance / glyphs[i].ftface->units_per_EM) * fontsize;

但是,偏移量似乎不正确,因为所有字形 x 和 y 偏移量都被 libraqm 设置为 0。

最初,我使用以下方法设置字形的位置:

const float left = (float)(origin_x + glyphs[i].x_offset); const float top = (float)(origin_y + font->leading + (font->ascent - glyphs[i].y_offset));

但这会导致所有字形都与文本行的顶部对齐,如下所示: (随机文字示例)

所以我修改了代码,将字形与文本行的底部对齐,如下所示:

const float left = (float)(origin_x + glyphs[i].x_offset); const float top = (float)(origin_y + font->leading + (font->ascent - glyphs[i].y_offset)) - glyphs[i].ftface->glyph->bitmap.rows;

虽然看起来更好,但还是不太对劲……

有谁知道我应该如何使用 libraqm 为每个字形获取正确的偏移量?

【问题讨论】:

    标签: c++ glyph freetype2


    【解决方案1】:

    不要使用glyphs[i].ftface->glyph->bitmap.rows 来获取字形高度,而是使用glyphs[i].ftface->glyph->bitmap_top,这样您的垂直对齐方式如下:

    const float top = (float)(origin_y + font->leading + (font->ascent - glyphs[i].y_offset)) - glyphs[i].ftface->glyph->bitmap_top;

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2013-06-18
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多