Java获取给定高度的字体大小

时间:2011-08-25 14:17:52

标签: java fontmetrics

是否有一种(整洁的)方式,而不是获得特定字体大小的高度,获得产生给定高度的特定字体(在本例中为SansSerif)的字体大小?

我当然可以循环使用字体大小或使用某种形式的二进制文章,但如果可能的话,我想使用更清洁,资源更少的东西。我发现的最好方法是使用this之类的东西。

3 个答案:

答案 0 :(得分:3)

没有简单的方法。

首先,您知道java只提供了五个逻辑字体系列。所有其他字体都不保证存在于您将运行该程序的系统中。

然后,不,系统上没有字体属性的自动映射。您必须加载它们并循环搜索您想要的度量。

使用this code,您可以循环使用可用的字体:

import java.awt.Font;
import java.awt.GraphicsEnvironment;
public class MainClass {
  public static void main(String[] a) {
    GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
    Font[] fonts = e.getAllFonts(); // Get the fonts
    for (Font f : fonts) {
      System.out.println(f.getFontName());
    }
  }
}

然后选择适合您需求的那个。更改代码以显示所需信息:例如,重量。

修改:注意http://download.oracle.com/javase/1.3/docs/guide/intl/addingfonts.html中的They are merely font-type names recognized by the Java runtime which must be mapped to some physical font that is installed on your system观察结果。

即使逻辑字体也不保证始终相同。你能做的是获得10pt的大小并计算字体大小。像

font_size_in_points =((10 * desidered_measure)/ equivalent_measure_of_the_10pt)

答案 1 :(得分:2)

搜索时,显示TextLayoutherehere将为给定文字提供最严格的界限。

答案 2 :(得分:1)

FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
metrics.getHeight()

你可能正在寻找。

更多信息:http://download.oracle.com/javase/6/docs/api/java/awt/FontMetrics.html