Java 字体不呈现

Posted

技术标签:

【中文标题】Java 字体不呈现【英文标题】:Java font doesn't render 【发布时间】: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));

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

【问题讨论】:

【参考方案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 会更容易 我最初确实有其他数字,只是认为由于某种原因这将是更好的价值。顺便说一句,我还尝试在绘图函数本身中添加您的解决方案,它起作用了!非常感谢。

以上是关于Java 字体不呈现的主要内容,如果未能解决你的问题,请参考以下文章

Java2D - 访问字体 CMap 以呈现连字

Firefox 不呈现来自 CloudFront 的字体

iPhone上的字体大小呈现不一致

更改字体系列后,UIWebView 文本首先呈现不正确

给定字体pt大小和dpi屏幕分辨率的Java2d / AWT文本呈现奇怪的大小/边界?

使用 TailwindCSS 时,Google 字体无法在移动设备上呈现