Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中找到文本字符串的真实可见大小_Java_Fonts_Typography - Fatal编程技术网

如何在Java中找到文本字符串的真实可见大小

如何在Java中找到文本字符串的真实可见大小,java,fonts,typography,Java,Fonts,Typography,可以在Java中找到字符串的真实边界框吗?即包含实际绘制的像素的最小矩形 我已经研究了FontMetrics和LineMetrics,虽然它们允许传入字符串,但它们似乎没有考虑字符本身,呃“a”、“p”和“p”都返回相同的高度 具体来说,它们似乎包括字符串高度的下降,即使实际字符没有下降到基线以下。我是否可以访问其他返回真实边界框的指标 或者,是否有任何方法可以判断某个特定角色是否有后代?请参见这一点,这是重点关注的内容 更高级的测量(获取特定字符串的边界框),然后是您的朋友 除了关于TextL

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

我已经研究了FontMetrics和LineMetrics,虽然它们允许传入字符串,但它们似乎没有考虑字符本身,呃“a”、“p”和“p”都返回相同的高度

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

或者,是否有任何方法可以判断某个特定角色是否有后代?

请参见这一点,这是重点关注的内容

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


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

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


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

您是否检查了getAscent()、getDescent()和charWidth()方法?查看页面了解详细信息我看过FontMetrics,问题是height()值似乎总是包含下降,即使是像“a”这样的字符。因此,我在字母下方的“a”框中有额外的空间。添加了到TextLayout教程的链接,我相信它可以处理此问题。特别是TextLayout.getBoundsThanks,这看起来正是我需要的。