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

Phil Race philip.race at oracle.com
Tue Apr 12 17:22:41 UTC 2016

Alexey didn't say this but he already proposed exactly this fix himself
in a private email exchange,

+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 :-)


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