Name: jk109818 Date: 08/05/2002
FULL PRODUCT VERSION :
java version "1.4.1-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1-beta-b14)
Java HotSpot(TM) Client VM (build 1.4.1-beta-b14, mixed mode)
FULL OPERATING SYSTEM VERSION :
Microsoft Windows XP [Version 5.1.2600]
A DESCRIPTION OF THE PROBLEM :
The quality of Java2D text antialiasing leaves a lot to be
desired in comparison to OS naitve antialiasing, especially
ClearType on Windows.
Java2D uses gray scale antialiasing. At point sizes below a
certain threshold (around 14pt it seems) this just does not
look very good, with text appearing 'lumpy' and uneven.
Either the way antialiasing interacts with font hinting
needs to be improved, or there should be a settable
rendering hint so that text below a certain size is not
antialiased. In Windows standard text antialiasing, this
works well. Larger font sizes are antialiased, where the
most benefit is seen, and smaller font sizes are untouched,
making them legible.
Another problem is that Java2D antialiasing does not measure
up to subpixel addressable antialiasing like in ClearType or
Adobe CoolType (in Acrobat). ClearType/CoolType looks quite
good even at smaller point sizes (12,pt, 10pt), and is much
sharper on digital LCD screens, and in my experience,
aperture grill monitors.
Finally, none of the Swing look and feels takes advantage of
antialiasing, probably because of its poor quality and
performance. This makes the Windows look and feel suffer in
comparison to native Windows applications.
One fix would be for Java2D to support ClearType style
antialiasing itself. A downside to this approach is that the
Java2D renderer would likely not gain the advantage of
hardware acceleration provided by native API's like Quartz
Extreme on Mac OS X, or in the future GDI+. Antialiasing is
performance intensive, so supporting the native OS rendering
path would have certain benefits.
And once antialiasing is acceptable for smaller point sizes,
Swing should support it in the Windows Look and Feel,
obeying the operating system settings for rendering options.
For example, if the user selects standard antialiasing in
the Control Panel, Swing should use grayscale antialiasing
for larger font sizes. If the user has picked ClearType,
Swing should use ClearType-style antialiasing for all point
This bug can be reproduced always.
CUSTOMER WORKAROUND :
Use older JDK's where rendering is down by the host OS. Use
.NET/GDI+ or other native OS api's.
(Review ID: 160298)