字符串宽度(以像素为单位)

问题描述 投票:0回答:3

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

c linux string fonts pixel
3个回答
4
投票

您无法自己做到这一点,除非您有定点字体(其中每个字符始终为 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, ...);
}

1
投票

最基本的场景,假设是定长字体:

int string_width = strlen(str) * CHAR_WIDTH_PX;

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

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


0
投票

您可能需要诸如 FreeType 库

之类的东西
© www.soinside.com 2019 - 2024. All rights reserved.