Epa*_*aga 9 java layout fonts font-size
使用某种字体,我使用Java的FontLayout来确定它的上升,下降和前导.(见Java的FontLayout教程这里)
在我的具体情况下,我使用的是Arial Unicode MS,字体大小为8.使用以下代码:
Font font = new Font("Arial Unicode MS", 0, 8);
TextLayout layout = new TextLayout("Pp", font,
new FontRenderContext(null, true, true));
System.out.println( "Ascent: "+layout.getAscent());
System.out.println( "Descent: "+layout.getDescent());
System.out.println( "Leading: "+layout.getLeading());
Run Code Online (Sandbox Code Playgroud)
Java给了我以下值:
Ascent: 8.550781
Descent: 2.1679688
Leading: 0.0
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.但是,如果我使用这些值的总和作为各行文本的行间距,这与OpenOffice,Microsoft Word等中使用的行间距相差很大:它更小.当使用默认单行间距Word和OO似乎有大约13.7 pt 的行间距(而不是像我使用上面的Java字体指标计算的10.7 pt).
任何的想法
到目前为止我尝试过的事情:
font.getNumGlyphs()等 - 仍然获得相同的字体度量值FontMetrics'等方法getLeading()ban*_*ity 10
Zarkonnen不值得他的支持,因为他在正确的路线上.许多Java字体似乎在他们的领导时返回零,也许他们不应该.也许是由于这个错误:我不知道.将这个空格重新放入其中似乎取决于你.
印刷线高度通常定义为上升+下降+前导.上升和下降从角色所在的基线向上和向下测量,并且前导是一条线的下降和下面的线的上升之间的空间.
![]()
但领先并不固定.您可以在大多数Word处理和印刷软件中设置领先地位.Word称之为行间距.最初的问题可能是询问Microsoft Word如何计算其单行间距.微软对OpenType字体的建议似乎表明不同平台上的软件以不同方式计算它.(也许这就是为什么Java现在返回零?)
一点点谷歌搜索似乎表明,对于单线间距或固定点间距,前导的经验法则是上升+下降的120% ; 说所有线之间领先2分.在没有任何严格或快速的规则我可以找到的情况下,我会说它归结为你所呈现的文本的易读性,你应该选择你认为最好的文本.