任何人都可以告诉我如何计算字符串的宽度(以像素为单位),提供以像素为单位的字体大小? 我必须在linux下用C来做吗?
您无法自己做到这一点,除非您有定点字体(其中每个字符始终为 X 像素宽)。在这种情况下,当然总宽度 = PixelPerChar * strlen(String)。
在比例字体的一般情况下,如果字符可能彼此“推近”,例如 A 和 V(一种称为“字距调整”的操作),则需要向字体渲染库询问,例如libGD2.lib此类库通常在给定字体文件、大小、方向和其他参数的情况下提供字符串的边界框。
使用 gdImageStringFT 的 GD2 示例:
int bbox[8]; // x,y of the rectangle bounding the text:
// see manual
gdImageStringFT(NULL, // "Tell me only"
bbox,0,
"/home/lserni/fonts/Verdana.ttf",18,
0.0,0,0,"Hello world");
if (checks on bbox OK)
{
gdImageStringFT(gdHandle, bbox, 0, ...);
}
最基本的场景,假设是定长字体:
int string_width = strlen(str) * CHAR_WIDTH_PX;
其中str是C字符串,CHAR_WIDTH_PX是字体的字符宽度。
但是当然,在不同的框架和系统中,事情是以不同的方式完成的。为了帮助您实现这一点,我们需要有关您的环境的更多信息。
您可能需要诸如 FreeType 库
之类的东西