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

Alexey Ivanov alexey.ivanov at oracle.com
Mon Apr 11 13:53:02 UTC 2016


Hello Dmitry,

Thank you very much for your patch.

The fix looks good to me.

I will sponsor integrating the fix into the code base as soon as code 
review is complete.

Thanks,
Alexey

On 07.04.2016 15:26, 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