C 将自由类型轴承转换为原点坐标

C 将自由类型轴承转换为原点坐标,c,drawing,freetype,C,Drawing,Freetype,我试图使用FreeType为微控制器创建位图字体,但我被坐标表达方式的根本差异所困扰。我的微控制器期望字形位图相对于左上角的原点有一个X和Y偏移,而FreeType给了我相对于不可见基线的“方位”。我很确定轴承X是我想要的X偏移量,但是我如何确定Y偏移量呢?我试着从上升高度中减去bearingY,但有些偏移量是负数。这是不可接受的,因为它使在显示的左上角绘制文本变得不可能。我通过预渲染所有图示符并跟踪实际渲染像素的最大上升和下降来解决问题。然后,我根据这两个值计算了所有glyph的最大高度,并使

我试图使用FreeType为微控制器创建位图字体,但我被坐标表达方式的根本差异所困扰。我的微控制器期望字形位图相对于左上角的原点有一个X和Y偏移,而FreeType给了我相对于不可见基线的“方位”。我很确定轴承X是我想要的X偏移量,但是我如何确定Y偏移量呢?我试着从上升高度中减去bearingY,但有些偏移量是负数。这是不可接受的,因为它使在显示的左上角绘制文本变得不可能。

我通过预渲染所有图示符并跟踪实际渲染像素的最大上升和下降来解决问题。然后,我根据这两个值计算了所有glyph的最大高度,并使用该值计算每个glyph位图从其顶部方向角的Y偏移。通过额外的渲染步骤,我还可以重新缩放面部,使其更接近我所需的像素高度。

我不明白为什么上升高度应该是相关的,它可能在顶部,也可能不在顶部,因此一些坐标出现负值也就不足为奇了。一些图形使用自顶向下的y坐标,其他图形使用自下而上的y坐标。我从未发现x方向不是从左到右的。我试图用上升高度来确定基线的位置。按照我的理解,上升者的高度是一个标志符号可以延伸的距离基线的最高点。显然情况并非如此。你建议我如何从描述从任意基线向上的距离的“方位”中从上到下获得Y偏移量?检查所有图示符,找到基线上方Y最大的一个。然后再加上几个像素,祝你好运,你就可以走了。