【问题标题】:Java get font size given heightJava获取给定高度的字体大小
【发布时间】:2011-08-25 14:17:51
【问题描述】:

有没有一种(简洁的)方法,而不是获取特定字体大小的高度,而是获取产​​生给定高度的特定字体(在本例中为 SansSerif)的字体大小?

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

【问题讨论】:

    标签: java fontmetrics


    【解决方案1】:

    没有简单的方法。

    首先,您知道 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 *desired_measure) / equivalent_measure_of_the_10pt)

    【讨论】:

    • 我不担心可用的系列,因为我一直在使用 SansSerif,它是 5 种字体之一。我只是在寻找一种方法来获取该特定字体的字体大小最接近给定高度的匹配。如果是在编译时选择字体大小的情况,我会像您建议的那样静态地完成它,但我需要能够在运行时给定特定的高度。
    【解决方案2】:

    搜索时,TextLayout(显示为 herehere)将为给定文本提供最严格的界限。

    【讨论】:

      【解决方案3】:
      FontMetrics metric = new FontMetrics(new Font("font"), Font.BOLD, 12);
      metrics.getHeight()
      

      可能就是你要找的。​​p>

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

      【讨论】:

      • 不 - 这会给我特定字体的高度(简单!)
      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2015-12-14
      • 2020-08-27
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多