Java 如何计算字体行距?(计算时代新罗马中 2 行之间的间距)



所以我正在创建一个极其可变的界面,甚至字体几乎必须是可变的(相信我,我需要它,所以它可以在每个分辨率上工作)但显然,如果文本有多行,则在单独的行之间有空格。

经过一些尝试,我发现字体之间的间距不是静态的(例如,2 像素),因此它必须是完整字体的百分比(例如,百分比为 25%,字体大小为 40 像素,而不是间距为 10 像素)或某种公式。

经过一些搜索工作,我找不到任何关于字体间距的信息,所以我认为它是 Java 特定的。不过,我对此表示怀疑。由于Java没有可以更改此间距的方法(据我所知)。

所以我的问题是,有没有办法改变或了解泰晤士报新罗马文本的 2 行间距?

最大的问题是我需要知道这一点才能创建字体......如果需要公式:fontSize = (myTextArea.getHeight()-([fontAscend]+[fontDescent])*21)/22

附言我正在使用 JTextArea,不想使用 JEditorPane

也许这就是你所追求的?

myTextArea.getFontMetrics().getHeight()

getFontMetrics是 JComponent 上的一个方法,它为您提供了一个具有getHeight()方法的FontMetrics对象。

行之间的间距取决于文本行是否有降序。

阅读 FontMetrics 类的介绍,了解您从未想知道的有关上升和下降的所有信息。

似乎对于我的特定问题(我必须创建字体并且我需要相同的字体才能创建它),唯一的选择是使用 JEditorPane 并使用 CSS 将间距设置为我可以在我的公式中使用的特定值或使用代数来获得正确的值。

最新更新