新java字体';s的大小始终为1

新java字体';s的大小始终为1,java,fonts,font-size,truetype,Java,Fonts,Font Size,Truetype,我用java为我的项目添加了一种新字体。但是,在渲染时,文本大小始终为1。文本基本上只显示为几行。我尝试了多种字体,他们都做到了。这是我的密码 public static void intializeFonts(){ try{ File font = new File("C:/The Woods/Fonts/script.ttf"); Font scriptFontU = Font.createFont(Font.TRUETYPE_FONT,

我用java为我的项目添加了一种新字体。但是,在渲染时,文本大小始终为1。文本基本上只显示为几行。我尝试了多种字体,他们都做到了。这是我的密码

public static void intializeFonts(){       
    try{
        File font = new File("C:/The Woods/Fonts/script.ttf");
        Font scriptFontU = Font.createFont(Font.TRUETYPE_FONT, font);
        Font scriptFont = scriptFontU.deriveFont(20);
        script = new TrueTypeFont(scriptFont, false);
    } catch(Exception e){
        System.out.println("Error Loading Font");
    }            
}
如果这有帮助的话,这也是我用来渲染它的

    g.setFont(Fonts.script);
    g.drawString("Weight: "+ItemContainer.getWeight()+"lbs", 30, 600);

任何帮助都会很好。谢谢。

当您调用
scriptFontU.deriveFont(20)
时,您正在调用
Font.deriveFont(int)
。在此函数中,第一个参数是表示样式的整数。相反,您需要调用
Font.deriveFont(float)
,它接受一个大小并保持样式不变。您可以通过调用
scriptFontU.deriveFont(20.0)
或等效程序来实现这一点;或者调用
Font.deriveFont(int,float)
as
scriptFontU.deriveFont(Font.PLAIN,20.0)
使其明确无误。

解决了这个问题,我使用了一个outprint来查找字体在系统中使用的名称,然后创建了新的Font(),而不是deriveFont(),它成功了。正如我在回答中提到的,
deriveFont
无法工作的原因是您调用了错误的重载。如果您总是处理注册的系统字体,那么您的解决方案是正确的(也是更好的解决方案),但是如果您的字体作为资源包含,您将希望使用您的原始方法。请注意,“回答”和“接受”您自己的问题是可以的。这是一个记录解决方案的好方法。是的,我在发布后不久就意识到它工作的唯一原因是因为我在系统中有它。