baseline: 上圖中黑色的線况木。前面已經(jīng)講過了芳肌,它的作用是作為文字顯示的基準(zhǔn)線。
ascent / descent: 上圖中綠色和橙色的線,它們的作用是限制普通字符的頂部和底部范圍寿弱。
普通的字符瑞侮,上不會高過 ascent 标沪,下不會低過 descent ,例如上圖中大部分的字形都顯示在 ascent 和 descent 兩條線的范圍內(nèi)卦睹。具體到 Android 的繪制中畦戒, ascent 的值是圖中綠線和 baseline 的相對位移,它的值為負(fù)(因為它在 baseline 的上方)结序; descent 的值是圖中橙線和 baseline 相對位移障斋,值為正(因為它在 baseline 的下方)。
top
/ bottom
: 上圖中藍(lán)色和紅色的線徐鹤,它們的作用是限制所有字形( glyph )的頂部和底部范圍垃环。
leading: 這個詞在上圖中沒有標(biāo)記出來,因為它并不是指的某條線和 baseline 的相對位移凳干。 leading 指的是行的額外間距晴裹,即對于上下相鄰的兩行,上行的 bottom 線和下行的 top 線的距離救赐,也就是上圖中第一行的紅線和第二行的藍(lán)線的距離(對涧团,就是那個小細(xì)縫)只磷。
FontMetrics 提供的就是 Paint 根據(jù)當(dāng)前字體和字號,得出的這些值的推薦值泌绣。它把這些值以變量的形式存儲钮追,供開發(fā)者需要時使用。
Canvas.drawText("中國",x,y,paint) y對應(yīng)baseline
paint.getFontMetrics()
paint.getFontSpacing() = descent-ascent < bottom - top
垂直居中 (viewHeight 被居中view高度)
(viewHeight + paint.getFontSpacing())/2 - descent
paint.setTextSize(textSize);設(shè)置的是字體寬度
paint.measureText("中國aabb")
水平居中
(viewWidth - paint.measureText("中國aabb"))/2