Algorithm n字形的边界框,给定单个B框和前进

Algorithm n字形的边界框,给定单个B框和前进,algorithm,graphics,fonts,2d,Algorithm,Graphics,Fonts,2d,出于特定的原因,我正在实现自己的字体渲染,需要一种算法,通过使用单个glyph的边界框以及相应的advance来计算文本的边界框。有关澄清,请参见: 对于这些N个标志符号中的每一个,都给出了相对于原点的相对bbox(xmin、xmax、ymin、ymax)和前进(伪代码): 如果没有人咬人,我将自己给出答案。在一般情况下,由于暗示、字距调整和,以及连字,它们将根据字形在字符串中的位置以及所选字体大小,显著修改字形的大小及其间距 通过迭代glyphs并添加advance width和xMin来计

出于特定的原因,我正在实现自己的字体渲染,需要一种算法,通过使用单个glyph的边界框以及相应的advance来计算文本的边界框。有关澄清,请参见:

对于这些N个标志符号中的每一个,都给出了相对于原点的相对bbox(xmin、xmax、ymin、ymax)和前进(伪代码):


如果没有人咬人,我将自己给出答案。

在一般情况下,由于暗示、字距调整和,以及连字,它们将根据字形在字符串中的位置以及所选字体大小,显著修改字形的大小及其间距

通过迭代glyphs并添加advance width和xMin来计算字符串长度的简单方法只适用于特定大小的特定字体,如果可能的话,不应该使用


获取字体度量的最简单方法是使用已建立的字体渲染引擎直接获取文本的长度(如果API公开该长度),或者将文本渲染到曲面,并在X/Y方向上找到最小/最大像素。

您假定我使用的是普通字体,我想测量一幅用常规方法画的画。我从来没有这样说过,因为这与问题无关。当我的问题真的与你所认为的大不相同时,我不能接受应该如何做的标准答案。我已经给出了所有的先决条件,甚至(借用的)图片都适合,也就是说,不涉及字距调整。OTOH,将我的字体信息输入到“已建立的字体渲染引擎”中,并显示它将比直接计算解决方案复杂得多,速度也慢得多。我讨论了一种常见情况,即有人希望测量一块文本,可能是通过单独获取字形的度量并执行他们自己的计算。显然,如果您正在编写自己的glyph布局算法,而该算法放弃了许多行业标准特性,例如字距和暗示,那么我的答案就不适用了。我建议编辑您的问题以注意这一事实,因为任何熟悉glyph布局的人都会有与我类似的评论。好的,我已经澄清了我的动机
int xmin[N], xmax[N], ymin[N], ymax[N], adv[N];