FontMetrics没有 cap height 的 setter/getter 和 x-height一种字体。
如何获取这些值?
就大写高度而言,不能保证特定大写字母的字母上升与大写高度相同。 (例如,大写字母 H 不能保证在顶部是平的)
就 x 高度而言,我假设它可能与“x”的高度相同,但同样,也不能保证。
编辑:哎呀!我刚试过 FontMetrics.getBounds()
和 FontMetrics.getLineMetrics()
对于特定的字符序列,我总是得到相同的高度答案(显然,getBounds() 的宽度确实不同)。在 hasUniformLineMetrics()
方法中有一个注释,关于 fontmetrics 有几种字体来覆盖字符集,但它覆盖字符组,而不是单个字符。
最佳答案
您正在寻找的是屏幕渲染框,它会告诉您文本的确切大小。
这意味着您需要在某个时候提供有关您正在绘制的表面和正在绘制的字符串的信息。原因是系统直到渲染后期才知道视觉结果。我用过:
Graphics2D g;
g.getFont().createGlyphVector(g.getFontRenderContext(),"abc").getVisualBounds();
你也可以试试:
Graphics2D g;
g.getFont().getMaxCharBounds(g.getFontRenderContext());
我也很难保持所有这些字体方法的正确性。
关于Java:如何找出字体的大写高度和 x 高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6202410/