像素的字符串宽度

时间:2012-07-10 09:29:58

标签: c linux string fonts pixel

任何人都可以告诉我如何计算字符串的宽度(以像素为单位),提供字体大小(以像素为单位)? 我必须在Linux下的C中做到这一点吗?

3 个答案:

答案 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

之类的内容