【问题标题】:New java font's size is always 1新 java 字体的大小始终为 1
【发布时间】:2012-12-03 12:31:03
【问题描述】:

我在 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);

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

【问题讨论】:

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

标签: java fonts font-size truetype


【解决方案1】:

当您拨打scriptFontU.deriveFont(20) 时,您拨打的是Font.deriveFont(int)。在这个函数中,第一个参数是一个表示样式的整数。相反,您想调用Font.deriveFont(float),它采用大小并保持样式不变。您可以通过调用scriptFontU.deriveFont(20.0) 或等效方法来执行此操作;或将Font.deriveFont(int, float) 称为scriptFontU.deriveFont(Font.PLAIN, 20.0) 以使其明确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2021-04-07
    • 2012-09-08
    相关资源
    最近更新 更多