[OpenJDK 2D-Dev] [PATCH FOR REVIEW] fix for fontmanager when no fonts are installed - RHBZ#862355,

Mario Torre neugens.limasoftware at gmail.com
Mon Nov 12 20:29:25 UTC 2012

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

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


2012/11/12 Phil Race <philip.race at 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:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20121112/15886078/attachment.html>

More information about the 2d-dev mailing list