有谁能告诉我如何计算字符串的宽度像素,提供字体大小像素?我必须在C在Linux下做吗?
shyt4zoc1#
你不能自己做这件事,除非你有一个定点字体(每个字符总是X像素宽)。在这种情况下,当然,总宽度= PixelPerChar * strlen(String)。在比例字体的一般情况下,如果字符可能会彼此“靠近”,例如A和V(一种称为“字距调整”的操作),则需要向字体渲染库请求,例如libGD 2。此类库通常提供字符串的边界框,给定字体文件,大小,方向和其他参数。使用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, ...); }
字符串
ylamdve62#
在最基本的情况下,假设它是一个固定长度的字体:
int string_width = strlen(str) * CHAR_WIDTH_PX;
字符串其中str是C字符串,CHAR_WIDTH_PX是字体的字符宽度。当然,在不同的框架和系统中,事情是以不同的方式完成的。为了帮助你,我们需要更多关于你的环境的信息。
qf9go6mv3#
您可能需要像FreeType library这样的东西
3条答案
按热度按时间shyt4zoc1#
你不能自己做这件事,除非你有一个定点字体(每个字符总是X像素宽)。在这种情况下,当然,总宽度= PixelPerChar * strlen(String)。
在比例字体的一般情况下,如果字符可能会彼此“靠近”,例如A和V(一种称为“字距调整”的操作),则需要向字体渲染库请求,例如libGD 2。此类库通常提供字符串的边界框,给定字体文件,大小,方向和其他参数。
使用gdImageStringFT的GD2示例:
字符串
ylamdve62#
在最基本的情况下,假设它是一个固定长度的字体:
字符串
其中str是C字符串,CHAR_WIDTH_PX是字体的字符宽度。
当然,在不同的框架和系统中,事情是以不同的方式完成的。为了帮助你,我们需要更多关于你的环境的信息。
qf9go6mv3#
您可能需要像FreeType library这样的东西