Poor quality font rendering

John C. Turnbull ozemale at ozemail.com.au
Thu Aug 22 04:31:26 PDT 2013

Hi Richard,

I do not know enough about font technology to be able to identify exactly
what the nature of the difference between native and JavaFX font rendering
is.  All I can really say is that there *is* a difference firstly and
secondly that the fonts rendered by JavaFX don't look as aesthetically
pleasing as the native ones.  I guess they do not look as crisp (i.e. appear
a little bit fuzzy) and some of the glyphs appear to not be quite right in
the sense that they are blurry and almost see-through.

This reminds me of a problem I have had in developing UIs with Java over the
years namely that it's really hard to get a Java application to look like a
native one.  I had hoped that this problem would be solved with JavaFX but
it appears that it's still going to be obvious to the end user that my
JavaFX application is just that: a Java application and not a native one.

I believe that subtle differences in the rendering quality of fonts are
noticeable to the user, even if they do not know why their app does not look
quite right.

Felipe, are you able to say if what we have with JavaFX font rendering on
Windows currently is as good as it is going to get or are there further
enhancements planned?



-----Original Message-----
From: Richard Bair [mailto:richard.bair at oracle.com] 
Sent: Thursday, 22 August 2013 01:16
To: John C. Turnbull
Cc: openjfx-dev at openjdk.java.net
Subject: Re: Poor quality font rendering

We're using the native font rasterizer. Can you explain "font render in
JavaFX is not at the same level of quality of native applications"? Is it
the shape of the glyphs, or how they are laid out relative to one another,
or something else?

The "GPU-based" and "CPU-based" issue is a red herring. We're using the CPU
for producing the masks (or whatever technique the native rasterizer is
using) and then the GPU is treating it as an image (which it fills with
whatever paint you've supplied).


On Aug 21, 2013, at 5:53 AM, "John C. Turnbull" <ozemale at ozemail.com.au>

> I have only really tested JavaFX extensively on Windows so my comments 
> here apply mainly to that platform.
> It seems that even with a font smoothing type of LCD, font rendering 
> in JavaFX is not at the same level of quality of native applications.  
> My current experiences are with JavaFX 8 b103 and I find that all 
> rendered text in JavaFX appears of a significantly poorer quality than 
> that which I would see in Word for example or even in IE10 (which I 
> believe uses the same text rendering engine).  Also, these observations
are based on text in "standard"
> controls and the quality of font rendering is dramatically worse 
> within the Canvas control.
> I am not an expert in font technology but I have read many times that 
> the levels of antialiasing for text that can be achieved in a 
> GPU-based renderer are always going to be less than that achieved in a
CPU-based renderer.
> This is often explained on the basis of graphics card drivers being 
> optimised for performance and the rapid rendering of triangles 
> commonly required in games rather than for rendering quality when it comes
to text.
> Is this the reason why JavaFX font rendering appears less legible and 
> of a lower quality than native apps?
> If so, how does IE10 for example achieve a higher quality of rendering 
> when it seems to also use DirectWrite?
> Is the quality of JavaFX font rendering ever going to improve?
> Thanks,
> -jct

More information about the openjfx-dev mailing list