12

FontMetrics没有字体的大写高度x 高度的吸气剂。

我怎样才能获得这些值?

就大写高度而言,不能保证特定大写字母的上升与大写高度相同。(例如,大写的 H 不能保证在顶部是平的)

就 x 高度而言,我认为它可能与“x”的高度相同,但同样不能保证。


编辑:Grr!我只是尝试FontMetrics.getBounds()FontMetrics.getLineMetrics()特定的字符序列,对于高度我总是得到相同的答案(很明显,getBounds() 的宽度确实不同)。该hasUniformLineMetrics()方法中有一条关于具有多种字体来覆盖字符集的字体度量的注释,但它涵盖了字符组,而不是单个字符。

4

4 回答 4

4

您正在寻找的是屏幕渲染框,它告诉您文本的确切大小。

这意味着您需要在某些时候提供有关您正在绘制的表面和正在绘制的字符串的信息。原因是系统直到渲染后期才知道视觉结果。我用了:

Graphics2D g;
g.getFont().createGlyphVector(g.getFontRenderContext(),"abc").getVisualBounds();

你也可以试试:

Graphics2D g;
g.getFont().getMaxCharBounds(g.getFontRenderContext());

我也很难保持所有这些字体方法的正确性。

于 2012-05-06T06:58:16.833 回答
0

我没有使用过它,但是GlyphView.GlyphPainter类有getAscent,getDescentgetHeight方法。这可能是要检查的东西。

于 2011-06-18T05:51:41.530 回答
0

好吧,如果你想用适合文本的文本制作一个框,我认为你可以将高度设置为字体大小本身

我不确定,但我认为这是我过去所做的

于 2012-05-06T02:27:50.877 回答
0

至于 x 高度,以下代码对我来说很好:

    public double getXHeight(Font font)
    {
        FontRenderContext fc = new FontRenderContext(null, false, false);
        TextLayout layout = new TextLayout("x", font, fc);
        return layout.getBounds().getHeight();
    }
于 2014-07-10T12:10:49.410 回答