Java 2D Enhancements in the Java™ SE 6.0

Major Features:
Fixed Bugs
Known Bugs and Issues

Major Features

Text rendering





Fixed Bugs

6182443 Rotated antialiased text is too light gray:

This bug is essentially side effect of turning off hinting for non-quadrant transforms. The problem was resolved as a part of the fix for 4654540.

4151279 Visual artifacts appear while rendering ovals, arcs, and rounded rectangles:

A separate pipeline was developed for drawing cubic and quad Bezier curves, where an adaptive forward differencing was applied. This approach noticeably improves quality and speeds up Bezier curve drawing.

4924220 Microsoft Sans Serif (True Type) font is not rendered properly:

The Microsoft Sans serif font glyph looked broken due to the current implementation of scan conversion algorithms. The smart dropout mechanism is added as part of the fix for the 6282527 bug.

6300721 Creating Animated GIF images repeatedly with different image frames crashes the VM:

The VM crash appeared as a stomp over memory in the Java heap as if code had gone off the end of an array. The fix checks the dimensions in the image representation code when the first portion of image is gotten. If the dimensions do not match, the internal buffered image is recreated.

6279846 Pixel values are different when source and destination ColorSpace supplied to a ColorConvertOp instance are the same:

If the source and destination ColorSpace objects supplied to a ColorConvertOp instance were the same, pixel values were different between the color converted destination and the original source. This bug is fixed by updating the sRGB profile and creating fast track (without any color transforms).

4654540 Need hinting support for text rendering with scaled and flipped matrices:

Truetype hinting was designed with the assumption that the orientation of glyphs regarding pixel grids would be fixed. That is why truetype hinting did not support complex affine transforms such as rotation, or shear, and scale transforms. As a fix the following approaches are implemented:

6397684 Setting a PrintService object without a name crashes the JVM:

If a PrintService object was set without a name (the getName() methods return null) then the JVM crashed. The problem was caused by the specific user's implementation: the PrintService interface had the getName() function that returned null and this null value was passed to the native function setNativePrintService.

6444688 Printing IndexColorModel images with a transparent pixel may fail on Windows:

Printing an image with bitmask transparency was sometimes incorrect on the Windows platform. A problem existed with the bitmask transparency case. Printing code handled the bitmask transparency as multiple smaller sub images of the original image. The fix includes the simplest and least risky solution: always creating a copy of an image.

6320281 Type1 hinting support is missed :

Before JDK 6 the java font rasterizer only supported hinting for Truetype fonts. However, Type1 fonts were commonplace on Solaris and Linux platforms and they often did not look very customary without hinting. To support the type1 hints the functionality is implemented:

4912220 1.4 REGRESSION: Flipping with asymmetric scaling often distorts fonts :

Truetype hinting was designed without support for arbitrary transforms. To overcome this limitation, hints are applied with a "safe" identity matrix and then with a transform hinted outline when non-trival transform is requested. The problem was resolved as a part of the fix for 4654540.

5051527 Faster, more direct software transformation of images:

The code to transform images used an image processing library to perform the operation. This approach required at least one intermediate buffer to be created for each transform operation. The new code enables you to transform any of the internally handled formats and composite to any of the internally handled formats in one operation with only a minimal stack-allocated one-line pixel buffer.

Known Bugs and Issues


On Windows Vista, the use of DirectDraw for hardware acceleration is currently disabled by default because of incompatibilities with Vista's Desktop Window Manager.

The -Dsun.java2d.noddraw=false property can be used to re-enable the use of the DirectDraw pipeline. However, this is not recommended due to rendering artifacts and performance problems. To also enable the Direct3D pipeline, a combination of the aforementioned flag and -Dsun.java2d.d3d=true should be used.

Oracle and/or its affiliates
Java Technology

Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.

Contact Us