一行有不同字号的字,布局绘制时有几个方案:
- 顶部对齐
- 中部对齐
- 底部对齐
- 基线对齐(OFFICE选择,也应该是所有软件的选择)
字体结构的Baseline/Leading/Ascent/Descent的图示_柳鲲鹏的博客-CSDN博客_ascent descent 字体
从上述博文中, 可以看到什么是基线。那么一行的基线是如何确定的呢?首先X方向布局完成,其次本行也确定位于本页内:
- 遍历所有叶子。
- 找到最大的叶子高度。有的叶子是图片,高度超过文本叶子。
- 找到最大的叶子BaselineFromBottom。
有两点要注意:BaseLine要从底部向上计算(因为行高度还不确定),要考虑底部有边框的情形。
- 设置行高。
- 设置BaselineFromTop
即行高-BaselineFromBottom。这样方便叶子处理。
- 绘制
根据传递的y,加上BaselineFromTop,就是文字绘制起点。