[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!
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
>>
>
More information about the 2d-dev
mailing list