1

谁能告诉我如何以像素为单位计算字符串的宽度,提供以像素为单位的字体大小?我必须在linux下用C做吗?

4

3 回答 3

4

你不能自己做到这一点,除非你有一个定点字体(每个字符总是 X 像素宽)。在这种情况下,当然总宽度 = PixelPerChar * strlen(String)。

在比例字体的一般情况下,如果字符可能被“推得很近”,例如 A 和 V(一种称为“字距调整”的操作),您需要询问字体渲染库,例如 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, ...);
}
于 2012-07-10T09:35:44.467 回答
1

在最基本的场景中,假设它是一个固定长度的字体:

int string_width = strlen(str) * CHAR_WIDTH_PX;

其中 str 是 C 字符串,CHAR_WIDTH_PX 是字体的字符宽度。

但当然,在不同的框架和系统中,事情以不同的方式完成。为了帮助您解决这个问题,我们需要有关您的环境的更多信息。

于 2012-07-10T09:34:24.000 回答
0

您可能需要类似FreeType 库的东西

于 2012-07-10T09:36:25.763 回答