在花費相當多的時間研究各種字型的這些值之後,這是我對 fontMetrics 函數所給出值的理解。我正在 Centos 6.5 上使用 php 5.3 和 ImageMagick 6.5.4-7。
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。這些值會給您下一個字元相對於目前字元的位置。
我希望這對您有所幫助。