Java字体不会呈现

时间:2015-07-04 11:26:52

标签: java fonts awt

我试图使用自定义fon,但由于某种原因它不会渲染,也不会抛出任何异常。 我已经查看了其他类似的问题,解决方案是将它添加到我所做的图形环境中。

public static Font font;

public static void main(String[] args) {


    try{
        font = Font.createFont(Font.TRUETYPE_FONT, new File("myFont.ttf"));
    }
    catch (Exception ex) {
        System.out.println("ex");
    }
    GraphicsEnvironment ge =
            GraphicsEnvironment.getLocalGraphicsEnvironment();
    ge.registerFont(font);
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            Main ex = new Main();
            ex.setVisible(true);

        }
    });
}

我稍后会使用这个字体,

public void draw(Graphics g, ImageObserver o){
        Graphics2D g2d = (Graphics2D) g;
        g2d.drawImage(bg, 0, 0, (int) Board.w, (int) Board.h, o);
        New.draw(g2d,o);
        Load.draw(g2d,o);
        Quit.draw(g2d,o);
        g2d.setFont(Main.font);
        g2d.drawString("Test Text",0,0);
    }

但那里什么都没有。

编辑:我已添加

    JList fonts = new JList( ge.getAvailableFontFamilyNames() );
    JOptionPane.showMessageDialog(null, new JScrollPane(fonts));

来自建议注册字体的相同示例,我可以在那里看到我的字体。

1 个答案:

答案 0 :(得分:1)

尝试:

try{
    font = Font.createFont(Font.TRUETYPE_FONT, new File("myFont.ttf"));
    font = font.deriveFont(30F);
}
catch (Exception ex) {
    ex.printStackTrace();
}

其中' 30F'是字体大小的浮点类型。