JDK-6675287 : D3D: regression: occasional artifacts when rendering LCD text
  • Type: Bug
  • Component: client-libs
  • Sub-Component: 2d
  • Affected Version: 6u10
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2008-03-13
  • Updated: 2010-10-14
  • Resolved: 2008-03-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u10 b20Fixed
Related Reports
Relates :  
When rendering certain glyph combinations with some fonts (like Monospaced 12pt)
some edge glyph pixels don't get colored and appear with some random color.

See the attached test case.

Reported in this thread:
A screenshot:

SUGGESTED FIX http://sa.sfbay.sun.com/projects/java2d_data/6u10/6675287.0

EVALUATION This bug was introduced by the fix for 6595317: D3D: some character combinations show color fringing (LCD AA) The edge pixels in some cases don't get textured because the cached destination texture is a little small. This fix for 6595317 adjusted the bounds of the glyphs in some cases, so that we don't update the cached destination texture if the glyphs' pixels don't touch too much. The problem is that when we need to reload the cached destination completely (like when the new glyph's bounds are not fully contained in the cached bounds), we may read 1 or 2 pixels too little, so when the first or the last glyph which supposedly fits into the cached destination is rendered, their edge pixels are not in the cached destination, and thus aren't textured, or textured with some random color. The fix is to use the adjusted glyph bounds only in case when we check the current glyph bounds against the previous glyph bounds.