[OpenJDK 2D-Dev] Fwd: [2D-Dev] Review Request: JDK-8015070: Antialiased text on translucent backgrounds gets bright artifacts

Torgeir Veimo torgeir.veimo at gmail.com
Thu Mar 17 11:19:54 UTC 2016


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.narayanan at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160317/c97b7bb6/attachment.html>


More information about the 2d-dev mailing list