我使用FreeType2进行字体渲染,并且我需要为所有字体获取全局边界框,以便我可以将它们对齐到一个漂亮的网格中。我叫FT_Set_Char_Size
接着用FreeType2:以像素为单位获取全局字体边界框?
int pixels_x = ::FT_MulFix((face->bbox.xMax - face->bbox.xMin), face->size->metrics.x_scale);
int pixels_y = ::FT_MulFix((face->bbox.yMax - face->bbOx.yMin), face->size->metrics.y_scale);
return Size (pixels_x/64, pixels_y/64);
其中工程提取了全球范围,但它是相当多的过大。我也试图计算使用双打(as described in the FreeType2 tutorial),但结果几乎相同。即使只使用也会导致太宽的边界框。我做的是正确的事,还是只有一些巨大的字形在我的字体(Arial.ttf在这种情况下?)有什么办法来检查哪个字形被认为是那么大?
我不知道哪些字符/要求多少。也就是说,当我初始化网格时,我还没有渲染任何东西。每个新角色都被添加到网格上的下一个空闲位置。 – Anteru 2011-03-11 14:01:22
一旦检测到较大的字符,就不可能重新放置已放置的字符? – 2011-03-11 19:32:17
如果屏幕网格开始重新调整,那看起来会很丑陋。 – Anteru 2011-03-12 06:56:10