【问题标题】:Java font doesn't renderJava 字体不呈现
【发布时间】:2015-09-22 01:52:55
【问题描述】:

我正在尝试使用自定义字体,但由于某种原因它不会呈现并且也不会引发异常。 我已经查看了解决方案将其添加到我所做的图形环境的其他类似问题。

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

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

【问题讨论】:

    标签: java fonts awt


    【解决方案1】:

    尝试:

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

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

    【讨论】:

    • 没有帮助,它仍然不存在。
    • @seMikel 在g2d.drawString("Test Text",0,0); 中您是否尝试将0,0 更改为其他值?使用MCVE 会更容易
    • 我最初确实有其他数字,只是认为由于某种原因这将是更好的价值。顺便说一句,我还尝试在绘图函数本身中添加您的解决方案,它起作用了!非常感谢。
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 2017-11-30
    • 2014-05-08
    相关资源
    最近更新 更多