如何确定Java中请求的字体的字体?

如何确定Java中请求的字体的字体?,java,fonts,2d,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.g

当我在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;
    }
}
Font-logicalFont=newjava.awt.Font(fontname,java.awt.Font.PLAIN,12);
对于(int i=0;i
但是在Java1.7中,FontManager没有getRegisteredFonts()静态成员(我认为它现在实际上是一个接口)。那么我怎样才能得到映射呢

谢谢-戴夫,试试看。那里似乎有一些方法,比如getAllFonts(),可以实现getRegisteredFonts过去的功能。

试试看。那里似乎有一些方法,比如getAllFonts(),它们完成了getRegisteredFonts过去的工作