Hi Phil, I believe that the underlying problem here is that it should be legal to create a font from a file, even if the FontManager doesn't have any fonts installed.
So, code like the one in the example: public class Test { public static void main(String[] args) throws Exception { Font.createFont(Font.TRUETYPE_FONT, new File("example.ttf")); } } When passed a real, valid font (example.ttf in this case) would still fail with the old code, and instead would work with the given patch (at least, I think this is the idea here, Jiri can probably explain in more details his intentions?). Cheers, Mario 2012/11/12 Phil Race <philip.r...@oracle.com> > Hello Jiri, > > Doesn't this just move the point of failure to a bit later ? > I can't see how having zero fonts on the system is survivable for an > app that uses fonts. That's the principal reason we haven't tried > to do something like this already. > > When facing system configuration issues maybe we just need to > print a better message for the exception such as > throw new InternalError("Can't find any fonts installed on this system."); > > Or make the default font more configurable and distros could ship one in > jre/lib/fonts. > > BTW it appears you are only trying to solve the problem for Linux/Unix. > Nothing for Windows or OS X. > > -phil. > > > On 11/12/2012 10:07 AM, Jiri Vanek wrote: > >> Hi! >> >> This is attempt to fix https://bugzilla.redhat.com/** >> show_bug.cgi?id=862355<https://bugzilla.redhat.com/show_bug.cgi?id=862355> >> The patch is introducing new exception >> src/share/classes/sun/font/**NoFontsFoundException.java, >> which is thrown from /src/solaris/classes/sun/awt/**X11FontManager.java >> instead of null pointer exception when no fonts are found on system. >> Exception is then catch in >> src/share/classes/sun/font/**FontManagerFactory.java, >> and in this case it returns (and not caching the instance of it) dummy font >> manager instead of continue in failure. >> the dummy manager do nothing, except that it is able to create >> java.awt.Font in same way as SunFontManager is doing, but is not doing any >> caching. >> >> To avoid duplicate code with >> src/share/classes/sun/font/**SunFontManager.java, >> i have extracted code from method createFont2D to new method here - >> prepareFont2D - which is responsible for creating font until caching.. >> >> Best regards, >> J. >> >> webrev >> http://jvanek.fedorapeople.**org/oracle/jdk8/webrevs/**fontProperties/<http://jvanek.fedorapeople.org/oracle/jdk8/webrevs/fontProperties/> >> with test (although it will probably need some tuning and I'm not sure >> where is the best place for it) >> http://jvanek.fedorapeople.**org/oracle/jdk8/webrevs/** >> fontProperties/test/src/**nofontsreproducer/<http://jvanek.fedorapeople.org/oracle/jdk8/webrevs/fontProperties/test/src/nofontsreproducer/> >> > > -- pgp key: http://subkeys.pgp.net/ PGP Key ID: 80F240CF Fingerprint: BA39 9666 94EC 8B73 27FA FC7C 4086 63E3 80F2 40CF IcedRobot: www.icedrobot.org Proud GNU Classpath developer: http://www.classpath.org/ Read About us at: http://planet.classpath.org OpenJDK: http://openjdk.java.net/projects/caciocavallo/ Please, support open standards: http://endsoftpatents.org/