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

Alexander Potochkin alexander.potochkin at oracle.com
Fri Apr 29 16:58:26 UTC 2016

for the reference: the fix was committed to JDK8 and JDK9

Thank you Dmitry for your contribution!

On 4/14/2016 12:00, Alexey Ivanov wrote:
> 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