[OpenJDK 2D-Dev] Possible solution for font-rendering issues in Windows

Phil Race philip.race at oracle.com
Sun Apr 28 19:05:32 UTC 2019


One thing to add is that Swing on Windows will use LCD text in all cases I can think of and that is rendered by Windows/GDI not free type.
Line and glyph spacing may still be affected (come from freetype) but not the glyph image itself.
So it would have to be some custom rendering in another mode using 2D directly to get freetype glyph images in b&w or grayscale.

-Phil.

> On Apr 28, 2019, at 10:14 AM, Philip Race <philip.race at oracle.com> wrote:
> 
> 
> 
>> On 4/28/19, 8:25 AM, Peter Harvey wrote:
>> Apologies if this is not the correct channel for this email.
> 
> It is, but if you want to send any more emails to this list, you will need to subscribe.
>> 
>> From what I can tell, Freetype 2.7 contained a change in hint processing that led to poorer quality font rendering on Windows. Any OpenJDK distribution using Freetype 2.7 or higher (ie. most distributions) will have poorer quality font rendering on Windows. I may have found a solution to this issue but I am unable to add comments to the relevant bugs:
>> 
>>    https://bugs.openjdk.java.net/browse/JDK-8217731
>>    https://bugs.openjdk.java.net/browse/JDK-8208377
>>    https://bugs.openjdk.java.net/browse/JDK-8214538
>>  
>> As a temporary workaround, users of OpenJDK distributions can force pre-2.7 font rendering by simply setting an environment variable:
>> 
>>    FREETYPE_PROPERTIES=truetype:interpreter-version=35
>> 
>> I've tested this workaround on OpenJDK distributions from Amazon, Oracle, and AdoptOpenJDK.
> 
> Do you mean you specifically tested out exactly the issues & scenarios
> listed in the above bug reports and found them all 100% reverted & cured ?
> If not, please detail what exactly you see in each case when applying the property vs previous JDKs.
> What version of Windows did you test, and did you test anything other than Windows ?
> 
> 
> 
>> Note that AdoptOpenJDK's distribution for Java 8 didn't require the workaround because it appears to be using Freetype 2.5.3. A quick Google for "truetype:interpreter-version=35" shows plenty of people in other open-source communities (eg. Wine, Fedora) which encourage this workaround for other software.
>> 
>> A more permanent solution would be to change the default build process for OpenJDK to set "truetype:interpreter-version=35" as the default when compiling Freetype.
> 
> I have read freetype notes on this and it isn't clear whether we want to go against what it does by default.
> And in any case, Oracle JDK switched from T2K to freetype in 11 so there can be differences due to that too.
> 
> It may be that Windows is the only platform on which this reversion is a good idea.
> And in any case, on Linux + Solaris (not sure about other Unix-like distros) OpenJDK
> currently uses the system freetype so a JDK build change for freetype wouldn't help.
> 
>> 
>> Please let me know if I can assist in any way. 
>> 
> 
> The above requested information ..
> 
> -phil.
> 
>> Regards,
>> Peter.
>> 
>> -- 
>> Actenum Corporation
>> Peter Harvey  |  Cell: 780.729.8192  |  harvey at actenum.com  |  www.actenum.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/2d-dev/attachments/20190428/b8eff85e/attachment-0001.html>


More information about the 2d-dev mailing list