[OpenJDK 2D-Dev] [PATCH] JDK-8146035: Windows - With LCD antialiasing, some glyphs are not rendered correctly

Alexey Ivanov alexey.ivanov at oracle.com
Thu Apr 14 09:00:51 UTC 2016


Hi Phil,

Thank you very much for your reviewing the code and approving the fix.

I have uploaded the webrev to OpenJDK:
http://cr.openjdk.java.net/~aivanov/dmitry.batrak/8146035/jdk9/webrev.00/

The patch is the same.

On 12.04.2016 20:22, Phil Race wrote:
> Alexey didn't say this but he already proposed exactly this fix himself
> in a private email exchange,

I didn't say that because it was Dmitry who was the original author of 
the fix. :)
Alex and I asked Dmitry to submit his fix to the public alias to give 
him proper credit as the author of the fix.


Regards,
Alexey

>
> +1, although I am not sure we can legally pull down the patch from 
> that (any) website.
> Please resubmit it as a diff in the email.
>
> Or Alexey could just push it as his own :-)
>
> -phil.
>
> On 04/07/2016 05:26 AM, Dmitry Batrak wrote:
>> Hello,
>>
>> I'd like to propose a fix for JDK-8146035. I am not a committer,
>> so I hope someone can sponsor this fix.
>> I work at Jetbrains, which has signed a company-level contributor 
>> agreement,
>> so, from a legal perspective, I believe, there are no obstacles.
>>
>> My investigation shows that the issue is caused by incorrect 
>> determination
>> of bitmap size, prepared for glyph rendering, so only part of glyph
>> becomes visible due to cropping. This seems to happen because
>> compatible bitmap is not selected into memory device context (DC)
>> before calling GetTextMetrics. Documentation for CreateCompatibleDC call
>> (https://msdn.microsoft.com/en-us/library/windows/desktop/dd183489%28v=vs.85%29.aspx) 
>>
>> says compatible bitmap needs to be selected into DC before any 
>> drawing operation.
>> Even though GetTextMetrics is not a drawing operation, it turns out
>> to be affected by selected bitmap's type too (by default a monochrome 
>> bitmap
>> is selected in a memory DC). This behaviour was also mentioned in the 
>> following
>> MSDN blog post comment:
>> https://blogs.msdn.microsoft.com/oldnewthing/20060614-00/?p=30873#comment-392143 
>>
>>
>> The proposed fix is to select a temporary 1x1 compatible bitmap
>> into memory DC before GetTextMetrics call.
>> Here's webrev link - http://adm-12504.intellij.net/
>> I didn't create a test case, as it would require a specific font file
>> (I couldn't reproduce the issue for fonts bundled with Windows).
>>
>> Best regards,
>> Dmitry Batrak
>




More information about the 2d-dev mailing list