【问题标题】:How does Java calculate font line spacing? (Calculate spacing between 2 lines in Times New Roman)Java如何计算字体行距? (计算 Times New Roman 中 2 行之间的间距)
【发布时间】:2013-11-19 15:34:09
【问题描述】:

所以我正在创建一个非常可变的界面,其中甚至字体几乎都必须是可变的(相信我,我需要它,因此它适用于每个分辨率) 但是很明显,如果是文本,则有多行,并且单独的行之间有空格。

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

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

所以我的问题是,有没有办法改变或了解两行 Times New Roman 文本之间的间距?

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

附:我正在使用 JTextArea 并且不喜欢使用 JEditorPane

【问题讨论】:

标签: java fonts jtextarea spacing


【解决方案1】:

也许这就是你所追求的?

myTextArea.getFontMetrics().getHeight()

getFontMetrics 是一个 method on JComponent,它为您提供一个具有 getHeight() methodFontMetrics 对象。

【讨论】:

  • 如果我是对的,那只给出字体的高度? (例如 14p)而不是行间距?
  • 它包含getLeading() 的值,即行之间的空间,所以它应该做正确的事情。
  • 问题:我需要使用这个间距来计算字体大小本身,FontMetrics 类构造函数需要一个 Font,它需要一个字体大小。
【解决方案2】:

行间距取决于该行文本是否有下行。

阅读FontMetrics class 的介绍,了解有关上升和下降的所有信息。

【讨论】:

  • 问题:我需要使用这个间距来计算字体大小本身,FontMetrics 类构造函数需要一个 Font,它需要一个字体大小。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 2015-12-10
    • 2016-06-15
    • 2013-01-27
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多