字符串绘制的字符高度以及行高


字符高度
我们在绘制文字的时候,需要确定绘制的字符高度以免发生重叠等问题,最简单的方式是通过Paint的fontMetrics来确定,如上图所示,一个文字有五个属性
- top 文字绘制行顶部相对baseLine的y值
- ascent 单个文字顶部相对baseLine的y值
- baseLine 文字绘制的y轴基点,用canvas.drawText(String text, float x, float y, Paint paint)方法绘制的时候,参数y就是绘制文字的baseLine
- bottom 文字绘制行底部相对baseLine的y值
- descent 单个文字底部相对baseLine的y值
- 还有一个leading属性,是文字行间距
所以很明显的,字符高度就是
descent-ascent
行高
行高就是
bottom-top+leading
绘制

用
canvas.drawText(String text, float x, float y, Paint paint)方法绘制的时候
需要确定baseLine,比如我需要绘制一个垂直进度图,需要计算高度生成MeasureSpec,从上往下计算:textY
- textY += paddingTop
- text高度=bottom-top + leading
- 自己定义的进度文字之间的间距D*M个
- text高度*N个…
- textY += paddingBottom
绘制的时候
计算baseLine的位置abs(ascent)