java - 如何确定我为 Java 中请求的字体获得的字体?

标签 java fonts 2d

当我在 Java 下请求一种字体时,如果该字体不存在,我需要确定它映射到什么字体(以便我可以记录使用中的映射)。在 Java 1.6 下我可以使用:

Font logicalFont = new java.awt.Font(fontname, java.awt.Font.PLAIN, 12);

for (int i = 0; i < FontManager.getRegisteredFonts().length; i++) {
    Font2D font2D = FontManager.getRegisteredFonts()[i];
    if (font2D instanceof CompositeFont && font2D.getFontName(Locale.getDefault()).equals(logicalFont.getFontName())) {
        PhysicalFont physicalFont = ((CompositeFont) font2D).getSlotFont(0);
        log.warn("The requested font '" + fontname + "' does not exist on this system. Substituting the font '" + physicalFont.getFamilyName(Locale.getDefault()) + "'");
        return;
    }
}

但在 Java 1.7 中,FontManager 没有 getRegisteredFonts() 静态成员(我认为它现在实际上是一个接口(interface))。那么如何获取映射呢?

谢谢 - 戴夫

最佳答案

尝试 http://www.docjar.com/docs/api/sun/java2d/SunGraphicsEnvironment.html .那里似乎有一些方法,例如 getAllFonts(),可以执行 getRegisteredFonts 曾经执行的操作。

关于java - 如何确定我为 Java 中请求的字体获得的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437843/

相关文章:

java - 如何编写java代码REST Assured代码来获取授权 token ?

java - 如何按名称和状态为 JPA 存储库查询排序?

c++ - 渲染二维元素的引用(圆形、圆角矩形、模糊~)

javascript - JavaScript 中的二维透视变换

c++ - 带有边界数字的算法设计 : Best Way to Represent a 2D Grid,,用 C++ 编写?

java - GraphicsDevice 和 JOptionPane 问题

java - 适用于 Android 的扫描仪(条形码)Api 无法检测到条形码

html - Internet Explorer 字体渲染

css - Wordpress(avada 主题)谷歌字体拉丁扩展不起作用

php - 如何更改 PhpStorm 2017 中的评论字体