特定のフォントを使用して、JavaのFontLayoutを使用して、そのascent、descent、およびleadingを決定します。Javaのフォントメトリックが正しくない/見つからない?
Ascent: 8.550781
Descent: 2.1679688
Leading: 0.0
:
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は私に次の値を与える:私は、次のコードを使用してのArial UnicodeのMS、フォントサイズ8を使用しています私の特定のケースで
(JavaのFontLayoutチュートリアルhereを参照してください)
これまでのところとても良いです。しかし、これらの値の合計をさまざまなテキスト行の行間隔として使用すると、これはOpenOffice、Microsoft Wordなどで使用される行間隔とはかなり異なります。既定の単一行間隔を使用する場合、Wordとオブジェクト指向は、13.7 pt(上記のJavaのフォントメトリックを使用して計算したように10.7ptの代わりに)の行間隔を持つようです。
任意のアイデア
- これはなぜですか?
- どういうわけかフォント情報にアクセスできるかWordとOpenOfficeはこの異なる行間隔につながるアクセスしているようですか?
私がこれまで試したもの:
- は
font.getNumGlyphs()
でグリフベクトルにすべてのグリフを追加することなど - まだ取得同じフォントメトリックは、複数行を使用して - 値hereに記載されているように、私が得た各行は、上に概説したのと同じフォントメトリクスを持っています。 Javaはないが、このような
getLeading()
+1これは表示される間違いではありません。 – banjollity