如何在Java中找到文本字符串的真实可见大小
可以在Java中找到字符串的真实边界框吗?即包含实际绘制的像素的最小矩形 我已经研究了FontMetrics和LineMetrics,虽然它们允许传入字符串,但它们似乎没有考虑字符本身,呃“a”、“p”和“p”都返回相同的高度 具体来说,它们似乎包括字符串高度的下降,即使实际字符没有下降到基线以下。我是否可以访问其他返回真实边界框的指标 或者,是否有任何方法可以判断某个特定角色是否有后代?请参见这一点,这是重点关注的内容 更高级的测量(获取特定字符串的边界框),然后是您的朋友如何在Java中找到文本字符串的真实可见大小,java,fonts,typography,Java,Fonts,Typography,可以在Java中找到字符串的真实边界框吗?即包含实际绘制的像素的最小矩形 我已经研究了FontMetrics和LineMetrics,虽然它们允许传入字符串,但它们似乎没有考虑字符本身,呃“a”、“p”和“p”都返回相同的高度 具体来说,它们似乎包括字符串高度的下降,即使实际字符没有下降到基线以下。我是否可以访问其他返回真实边界框的指标 或者,是否有任何方法可以判断某个特定角色是否有后代?请参见这一点,这是重点关注的内容 更高级的测量(获取特定字符串的边界框),然后是您的朋友 除了关于TextL
除了关于TextLayout的教程之外,javadoc还包含了它的使用示例。您可以使用
javax.swing.SwingUtilities.layoutCompoundLabel
。不要被许多参数吓倒。有两个版本,带有JComponent(可能为null)的版本具有更多标志。它用于JLabel,因此用途非常广泛,并生成一个矩形
顺便说一句,即使在“a”上,也可能会在边界上添加一个下降者,这在这里也可能发生。您可以使用GlyphVector并在那里计算边界框,但是当字体提示处于启用状态时,像素位置会稍微偏离,这可能会在几个字符上累积错误?您是否检查了getAscent()、getDescent()和charWidth()方法?查看页面了解详细信息我看过FontMetrics,问题是height()值似乎总是包含下降,即使是像“a”这样的字符。因此,我在字母下方的“a”框中有额外的空间。添加了到TextLayout教程的链接,我相信它可以处理此问题。特别是TextLayout.getBoundsThanks,这看起来正是我需要的。