先看一张图:
1.png
Baseline是基线,在android中,文字的绘制都是从Baseline处开始的,Baseline往上至字符“最高处”的距离我们称之为ascent(上坡度),Baseline往下至字符“最低处”的距离我们称之为descent(下坡度);
leading(行间距)则表示上一行字符的descent到该行字符的ascent之间的距离;
2.pngtop和bottom文档描述地很模糊,其实这里我们可以借鉴一下TextView对文本的绘制,TextView在绘制文本的时候总会在文本的最外层留出一些内边距,为什么要这样做?因为TextView在绘制文本的时候考虑到了类似读音符号,下图中的A上面的符号就是一个拉丁文的类似读音符号的东西:
Baseline是基线,Baseline以上是负值,以下是正值,因此 ascent,top是负值, descent和bottom是正值。
Paint.FontMetrics metrics = mPaint.getFontMetrics();
其实真是的文本高度为: metrics.descent - metrics.asscent;
但是绘制的时候一般都是以:metrics.bottom - metrics.top 来作为文本的高度
那么基线的y轴坐标就是: getHeight() / 2 + (metrics.bottom - metrics.top) / 2 - metrics.bottom;
网友评论