Java:如何找出字体的大写高度和 x 高度?

标签 java fontmetrics

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/

相关文章:

java - 基于控制台的应用程序到 Java 中基于 GUI 的应用程序

java - 如何修复这个十六进制到二进制转换器?

java - 为什么只有拉丁字符的 Java 字体声称支持亚洲字符,即使它不支持?

java - 在 J2ME 中测量 AttributedString 的宽度

Java:获取具有特定高度(以像素为单位)的字体

java - 右对齐图片上的文字

java - 解析 SOAP Enveloper header 的 header 元素

java - protoc 自定义插件出错并显示程序未找到或不可执行

java - 有时我不知道某些方法属于哪个类。我究竟做错了什么?

Java 2D PNG : Calculate Dimension