7

是否可以在 Java 中找到字符串的真正边界框?即包含实际绘制的像素的最小矩形?

我看过 FontMetrics 和 LineMetrics,虽然它们允许传入一个字符串,但它们似乎并没有考虑到字符本身,嗯“a”、“p”和“P”都返回相同的高度。

具体来说,即使实际字符没有下降到基线以下,它们似乎也包括字符串高度的下降。我可以访问其他返回真实边界框的指标吗?

或者,有什么方法可以判断一个特定的角色是否有下降者?

4

2 回答 2

4

请参阅这篇关于测量文本的教程,该教程主要关注FontMetrics

更高级的测量(获取特定字符串的边界框),然后TextLayout是您的朋友,如此处所述

除了有关 TextLayout 的教程之外,javadoc 还包含其使用示例。

于 2012-04-13T17:40:01.767 回答
0

您可以使用javax.swing.SwingUtilities.layoutCompoundLabel. 不要被许多参数吓倒。有两个版本,带有 JComponent 的版本(可能为空)做更多的标志。它用于 JLabel,用途广泛,并生成一个 Rectangle。

顺便说一句,即使在“a”上,下降器也可能被添加到边界,也可能在这里发生。您可以使用 GlyphVector 并在那里计算一个边界框,但是当字体提示打开时,像素位置会稍微偏离,哪个错误可能会累积在几个字符上?

于 2012-04-13T18:04:39.540 回答