热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获取异常FontFormatException不支持的sfntresources/fonts/OpenSansEmoji.ttf

如何解决《获取异常FontFormatException不支持的sfntresources/fonts/OpenSansEmoji.ttf》经验,为你挑选了1个好方法。

我有资源/字体文件夹中的OpenSansEmoji.ttf和其他字体,如Proxima Nova Regular.otf,对于Proxima Nova Regular.otf/Proxima Nova Alt Light.ttf它不会给我异常,OpenSansEmoji.otf也不是OpenSansEmoji. ttf它给了我以下异常我该怎么办?

 Feb  25, 2015 10:37:31 AM java2d.utils.FontUtils getFont
    SEVERE: null
    java.awt.FontFormatException: Unsupported sfnt resources/fonts/OpenSansEmoji.ttf
        at sun.font.TrueTypeFont.init(TrueTypeFont.java:522)
        at sun.font.TrueTypeFont.(TrueTypeFont.java:191)
        at sun.font.SunFontManager.createFont2D(SunFontManager.java:2460)
        at java.awt.Font.(Font.java:614)
        at java.awt.Font.createFont(Font.java:1023)
        at java2d.utils.FontUtils.getFont(FontUtils.java:53)
        at java2d.CrushCard.drawMessageString(CrushCard.java:311)
        at java2d.CrushCard.createCrushCard(CrushCard.java:134)
        at java2d.Java2D.main(Java2D.java:43)

我的代码在这里

  try {
            FontUtils.registerFonts(fonts);
        } catch (IOException | FontFormatException ex) {
            Logger.getLogger(Java2D.class.getName()).log(Level.SEVERE, null, ex);
        }



  public static void registerFonts(List paths) throws IOException, FontFormatException {

        for (String path : paths) {
            String fName = "resources/fonts/" + path;
            GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
            ge.registerFont(Font.createFont(Font.TRUETYPE_FONT, new File(fName)));
        }
    }

Adrian Leonh.. 7

根据维基百科,http://en.wikipedia.org/wiki/SFNT是字体的容器格式,由TrueType等使用.但是,Java不支持所有SFNT字体,仅支持TrueType.

来自sun.font.TrueTypeFont javadoc:

TrueTypeFont不称为SFntFont,因为它不会处理可能存放在这样的字体文件中的所有类型.

基本上这意味着你的字体虽然有.ttf文件结尾,但实际上并不是TrueType,你也不能使用它.它可能是一个OpenTypeFont,Java不支持它.你可以尝试转换字体; 谷歌显示了一些可能性.



1> Adrian Leonh..:

根据维基百科,http://en.wikipedia.org/wiki/SFNT是字体的容器格式,由TrueType等使用.但是,Java不支持所有SFNT字体,仅支持TrueType.

来自sun.font.TrueTypeFont javadoc:

TrueTypeFont不称为SFntFont,因为它不会处理可能存放在这样的字体文件中的所有类型.

基本上这意味着你的字体虽然有.ttf文件结尾,但实际上并不是TrueType,你也不能使用它.它可能是一个OpenTypeFont,Java不支持它.你可以尝试转换字体; 谷歌显示了一些可能性.


感谢您通过在线将字体转换为真型字体立即做出的响应,现在没有给我例外:)
推荐阅读
author-avatar
小群群zheng
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有