我从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或其他版本)。
有任何想法吗?
最佳答案
font.deriveFont采用浮点数而不是int。
尝试label.setFont(font.deriveFont(12f));