任何人都可以告诉我如何计算字符串的宽度(以像素为单位),提供字体大小(以像素为单位)? 我必须在Linux下的C中做到这一点吗?
答案 0 :(得分:4)
除非你有一个固定点字体(每个字符总是X像素宽),否则你不能自己做。在这种情况下,当然总宽度= PixelPerChar * strlen(String)。
在比例字体的一般情况下,如果字符可能被“推近”"相互之间,例如A和V(称为" kerning"的操作),你需要询问字体渲染库,例如: libGD2。在给定字体文件,大小,方向和其他参数的情况下,这些库通常提供字符串的边界框。
使用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, ...);
}
答案 1 :(得分:1)
在最基本的场景中,假设它是固定长度的字体:
int string_width = strlen(str) * CHAR_WIDTH_PX;
其中str是C字符串,CHAR_WIDTH_PX是字体的字符宽度。
但当然,在不同的框架和系统中,事情以不同的方式完成。为了帮助您,我们需要有关您的环境的更多信息。
答案 2 :(得分:0)
您可能需要FreeType library
之类的内容