使用某种字体,我使用 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());
Java 给了我以下值:
Ascent: 8.550781
Descent: 2.1679688
Leading: 0.0
到目前为止,一切都很好。但是,如果我将这些值的总和用作不同文本行的行距,这与 OpenOffice、Microsoft Word 等中使用的行距有很大不同:它更小。当使用默认的单行间距时,Word 和 OO 的行间距似乎约为13.7 pt(而不是像我使用上面的 Java 字体度量计算的10.7 pt)。
任何想法
- 这是为什么?
- 我是否可以以某种方式访问 Word 和 OpenOffice 似乎正在访问的字体信息,这会导致这种不同的行距?
到目前为止我尝试过的事情:
- 使用 etc. 将所有字形添加到字形矢量
font.getNumGlyphs()
- 仍然获得相同的字体度量值 - 如此处所述使用多行- 我得到的每一行都具有与上述相同的字体度量。
- 使用
FontMetrics
' 方法,例如getLeading()