Hi, has this technique also been tested with the new subpixel antialiasing font rendering on OSX, that is currently disabled by default for translucent surfaces?
http://cr.openjdk.java.net/~bae/8023794/9/webrev.10/ On 17 March 2016 at 20:00, Prahalad Kumar Narayanan < prahalad.kumar.naraya...@oracle.com> wrote: > Hello Everyone on Java2D Group > > > > Good day to you. > > > > Herewith, I 'm sharing the webrev for two identical Java2D Bugs. > > Bug ID : JDK-8015070 > > Title : Antialiased text on translucent backgrounds gets bright > artifacts > > Link : https://bugs.openjdk.java.net/browse/JDK-8015070 > > > > Bug ID : JDK-8013564 ( currently closed as duplicate ) > > Title : Font rendering anti-aliasing in translucent > BufferedImages broken > > Link : https://bugs.openjdk.java.net/browse/JDK-8013564 > > > > Webrev Link : > http://cr.openjdk.java.net/~psadhukhan/prahlad/8015070/webrev.00/ > > > > Quick Summary on Bugs : > > ```````````````````````````````````````````````` > > 1. Artifacts appear on Edges of text characters when anti-aliased text is > drawn on Translucent background > > 2. The issue is reproducible on all platforms - windows, linux and mac os. > > 3. Besides, the issue is reproduced with the commonly used pixel format- > 4ByteArgb. > > > > Root Cause & Solution : > > ```````````````````````````````````````````````` > > 1. The Macro: GlyphListAABlend4ByteArgb in File: LoopMacros.h uses the > standard blending algorithm > > dstColor = [ srcColor * glyphAlpha + dstColor * (1 - glyphAlpha) ] > / dstAlpha > > 2. The above equation works only when the srcColor and dstColor are > Opaque. > > > > 3. When srcColor and dstColor are Translucent, their alphaComponent will > influence the visibility of the color, and visibility of the color below. > > 4. The new set of calculations for blending Translucent source and > destination colors is given as > > resAlpha = 1 - ((1 - srcAlpha) * (1 - dstAlpha)) > > resColor = [ srcColor * srcAlpha + dstColor * dstAlpha * (1 - > srcAlpha) ] / resAlpha > > 5. Reference text for the equation: > https://en.wikipedia.org/wiki/Alpha_compositing > > 6. With the above modification to the blending logic, the artifacts do > not appear and issues are fixed. > > > > Jtreg & Jprt Results : > > ```````````````````````````````````````````````` > > 1. A simple test-file: AADrawStringArtifact.java has been created to be a > part of jtreg test cases. > > The test file is well commented to explain - nature of artifact > and how the test tries to identify them. > > As required, the test case fails with Jdk 7, Jdk 8 and succeeds > with Jdk 9-internal (built with changes for the bug fix) > > > > 2. The changes to blending logic lies within > java.desktop/src/share/native/... > > Henceforth, JPRT was used to ensure successful build across all > supported platforms > > Jprt Job Link : > http://scaaa637.us.oracle.com//archive/2016/03/2016-03-17-072001.prahnara-linux.client > > The build succeeds on all platforms. > > > > Kindly review the webrev link and provide your views and suggestions. > > Webrev Link : > http://cr.openjdk.java.net/~psadhukhan/prahlad/8015070/webrev.00/ > > > > If the changes look good, we could take up the changes for source checkin. > > > > Thank you for your time in review > > Have a good day > > > > Prahalad N. > -- -Tor -- -Tor