将 FreeType 轴承转换为原点坐标
Convert FreeType Bearings to Origin Coordinates
我正在尝试使用 FreeType 为微控制器创建位图字体,但我对坐标表达方式的根本差异感到困惑。我的微控制器期望字形位图相对于左上角的原点有 X 和 Y 偏移,而 FreeType 给我相对于不可见基线的 "bearings"。我很确定 bearingX 是我想要的 X 偏移量,但是我如何确定我的 Y 偏移量?我尝试从上升器高度中减去方位 Y,但一些偏移量为负值。这是不可接受的,因为它使得无法在显示器的左上角绘制文本。
我通过预渲染所有字形并跟踪实际渲染像素的最大上升和下降解决了我的问题。然后我从这两个值计算出所有字形的最大高度,并用它来计算每个字形位图距其顶部方位的 Y 偏移量。通过额外的渲染步骤,我还可以重新缩放面部以更接近地匹配我想要的像素高度。
我正在尝试使用 FreeType 为微控制器创建位图字体,但我对坐标表达方式的根本差异感到困惑。我的微控制器期望字形位图相对于左上角的原点有 X 和 Y 偏移,而 FreeType 给我相对于不可见基线的 "bearings"。我很确定 bearingX 是我想要的 X 偏移量,但是我如何确定我的 Y 偏移量?我尝试从上升器高度中减去方位 Y,但一些偏移量为负值。这是不可接受的,因为它使得无法在显示器的左上角绘制文本。
我通过预渲染所有字形并跟踪实际渲染像素的最大上升和下降解决了我的问题。然后我从这两个值计算出所有字形的最大高度,并用它来计算每个字形位图距其顶部方位的 Y 偏移量。通过额外的渲染步骤,我还可以重新缩放面部以更接近地匹配我想要的像素高度。