1

我从 fontpalace.com 下载了 Helvetica 字体(只需搜索 Helvetica),并使用 Font.createFont() 将其包含到 Java 应用程序中。但是字体度量不适用于此,即计算出的标签最小尺寸是错误的。

一个显示此问题的简单示例应用程序:

package fontTest;
import java.awt.Font;
import java.io.InputStream;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class FontTest extends JFrame {
    public FontTest() {
        JLabel label = new JLabel("Test");
        try {
            InputStream is = FontTest.class.getResourceAsStream("Helvetica.ttf");
            Font font = Font.createFont(Font.TRUETYPE_FONT, is);
            label.setFont(font.deriveFont(12f));
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        add(label);
        pack();
    }

    public static void main(String[] args) {
        FontTest fontTest = new FontTest();
        fontTest.setVisible(true);
    }
}

如果您使用 label.setFont(..) 删除该行,那么 pack() 命令将起作用,并且窗口会调整大小以使文本可读。但是,这样,pack() 无法正常工作,导致标签和窗口被调整到非常小的尺寸,从而切断了文本。我在 Linux 和 Windows 上遇到了这个问题。

我错过了什么吗?似乎有些 ttf 字体文件有效,有些则无效。但我找不到能正常工作的 Helvetica(原来的,不是 Neue Helvetica 或其他)。

有任何想法吗?

4

1 回答 1

1

font.deriveFont 采用浮点数而不是 int。试试 label.setFont(font.deriveFont(12f));

于 2012-10-25T21:14:56.410 回答