在花了一些时间查看各种字体的这些值后,这是我对 fontMetrics 函数给出的值的理解。我使用的是 php 5.3 和 ImageMagick 6.5.4-7 在 Centos 6.5 上。
characterWidth 和 characterHeight
- 这些似乎与您为字体指定的尺寸有关,并且似乎不会因字体而异(在相同尺寸下)。因此,它们不是特别有用(至少对我而言)。它们不是字体将使用多少空间的可靠指标。
ascender
- 升部是字体中高于基线的部分。它与字符无关 - 升部值对于字体中的每个字符都是相同的。
descender
- 降部是字体中低于基线的部分。它表示为一个负数。将升部和降部的绝对值相加,您将得到...
textHeight
- 这是字体可用的总高度。对于字体中的每个字符,无论其大小写或字符看起来占用了多少空间,它都是相同的。这可用于确定输出段落等时的行高。
textWidth
- 此值因字符而异,是字符的宽度。如果 boundingBox 未提供可用值,这将很有用(请参阅下面的 boundingBox)。在逐个定位字符时 - 不要使用 textWidth,请使用 originX(请参阅下面)。
maxHorizontalAdvance
- 恐怕我还没有完全弄清楚它的用途。对于字体中的每个字符,它都是相同的。对于尺寸为 67 的 Arial Italic 字体,该值为 89,这比相同尺寸的 M 或 W 报告的提前量要宽得多。
boundingBox
- 这将返回一个关联数组,描述包含字符的矩形的四个点 (x1, y1, x2, y2)。这些值相对于原点(即您在图像中绘制字符的坐标)。返回的矩形非常准确,并完全包含所有打印的字符部分 - 但 boundingBox 仅适用于单个字符。它不会给出多个字符的准确数字(根据我的经验)。绘制框时,您需要将“x”值添加到原点,并将“y”值从原点中减去。您不能依赖 SPACE 字符的 boundingBox。它返回 (0,0,0,0) 的 boundingBox。textWidth(见上文)在这里很方便。
originX 和 originY
- 这些标题不准确。originX 和 originY 中返回的值实际上是 advanceX 和 advanceY。这些值会告诉您下一个字符相对于当前字符的位置。
希望这对你有所帮助。