JDK中字体的高度信息ascent/descent/leading是怎么计算的

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDK中字体的高度信息ascent/descent/leading是怎么计算的相关的知识,希望对你有一定的参考价值。

  • JAVA流程

FontDesignMetrics.getMetrics(Font, FontRenderContext) line: 302    
FontDesignMetrics.<init>(Font, FontRenderContext) line: 350    
FontDesignMetrics.initMatrixAndMetrics() line: 359    
FileFontStrike.getFontMetrics() line: 815    
TrueTypeFont(FileFont).getFontMetrics(long) line: 181    
FreetypeFontScaler.getFontMetrics(long) line: 78    
FreetypeFontScaler.getFontMetricsNative(Font2D, long, long) line: not available [native method]  StrikeMetrics.<init>(float, float, float, float, float, float, float, float, float, float) line: 96

getFontMetricsNative是本地函数,然后新建StrikeMetrics对象。

  • getFontMetricsNative

FTScalerInfo.face中的值:ascender/descender/height

leading=height-ascender-descender

处理完毕之后,再新建一个对象StrikeMetrics。

以上是关于JDK中字体的高度信息ascent/descent/leading是怎么计算的的主要内容,如果未能解决你的问题,请参考以下文章

TextView 垂直居中

泰山OFFICE技术讲座:同一行不同字号的字如何对齐绘制

字体实际效果,FreeType的字号,对应Windows字体的高度

字体实际效果,FreeType的字号,对应Windows字体的高度

Android 简单自定义TextView

Qt 浅析QFontMetrics 获取字体宽度,高度