2011-09-15 49 views
2

当我请求Java下的字体时,如果该字体不存在,我需要确定它映射的字体(以便我可以记录正在使用的映射)。在Java 1.6的我可以使用:如何确定我在Java中获得所需字体的字体?

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()静态成员(我认为它实际上是一个接口现在)。那么我怎样才能获得映射?

谢谢 - 戴夫

回答

相关问题