Java 将truetype字体文件与font.createFont一起使用时,文本度量错误
我从fontpalace.com下载了Helvetica字体(只需搜索Helvetica),并使用font.createFont()将其包含到Java应用程序中。但是字体度量不适用于此,即计算的标签最小大小是错误的 显示此问题的简单示例应用程序: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
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”后,结果会有一点改进,但度量计算仍然是错误的,因此窗口有点太小,会截断部分文本。