Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
出于特定原因,我正在实现自己的字体渲染,并且需要一种算法来通过使用单个字形的边界框以及相应的高级来计算文本的边界框。有关说明,请参见此图:
对于这N个字形中的每一个,都给出了相对于原点(xmin、xmax、ymin、ymax)和前进(伪代码)的相对 bbox:
int xmin[N], xmax[N], ymin[N], ymax[N], adv[N];
如果没人咬,我会自己给出答案。
对于一般情况,由于提示、字距调整和连字,您将无法仅使用字形边界框和提前宽度来准确测量字符串,这将显着修改字形的大小及其间距,具体取决于它们在字符串以及选择的字体大小。
通过迭代字形并添加提前宽度和 xMin 来计算字符串长度的幼稚方法仅适用于某些大小的某些字体,并且尽可能不使用。
获取字体度量的最简单方法是使用已建立的字体渲染引擎直接获取文本的长度(如果 API 公开该长度)或将文本渲染到表面并找到 X/Y 中的最小/最大像素方向。