Java 将truetype字体文件与font.createFont一起使用时,文本度量错误

Java 将truetype字体文件与font.createFont一起使用时,文本度量错误,java,fonts,pack,truetype,Java,Fonts,Pack,Truetype,我从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; pub

我从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字体文件可以工作,有些则不行。但我找不到一个能正常工作的直升机(原来的,不是Neue Helvetica或其他的)


有什么想法吗?

font.deriveFont接受浮点而不是整数。
尝试label.setFont(font.deriveFont(12f))

font.deriveFont接受浮点而不是整数。
尝试label.setFont(font.deriveFont(12f))

谢谢!这是一个令人尴尬的错误,把一个int放在那里。使用“f”后,结果有所改善,但度量计算仍然错误,导致窗口有点太小,并切断了部分文本。谢谢!这是一个令人尴尬的错误,把一个int放在那里。使用“f”后,结果会有一点改进,但度量计算仍然是错误的,因此窗口有点太小,会截断部分文本。