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

Thank you Dmitry for your contribution!
alexp

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



Reply via email to