PHP-根据字符串和所用字体计算字符串所占宽高
今天由于用GD画图, 需要把一段文字在一个框内居中, 但是文字的宽度如果用strlen($str) * $font_size来计算的话, 由于文字不是等宽高的, 所以会导致偏离, 最后选用的GD库的imagettfbbox()函数, 其原型如下
array ImageTTFBBox(int size, int angle, string fontfile, string text);
其中返回一个数组, 有八个元素, 描述了四个角的坐标
0 左下角 X 位置
1 左下角 Y 位置
2 右下角 X 位置
3 右下角 Y 位置
4 右上角 X 位置
5 右上角 Y 位置
6 左上角 X 位置
7 左上角 Y 位置
$pos = imagettfbbox(self::FONT_SIZE , 0, self::FONT_FILE, $name);
其中self::FONT_SIZE、self::FONT_FILE分别为类中配置的字体大小和所用字体
字符串所占宽度为:
$pos[2] - $pos[0]
字符串所占高度为:
$pos[5] - $pos[3]