[OpenJDK 2D-Dev] [9] RFR JDK-8147002:[macosx] Arabic character cannot be rendered on MacOS X
Prasanta Sadhukhan
prasanta.sadhukhan at oracle.com
Thu Feb 9 09:08:11 UTC 2017
Hi All,
Please review a fix for an issue which causes arabic character "alef" to
be not rendered in osx for menlo font in italic style.
Bug: https://bugs.openjdk.java.net/browse/JDK-8147002
The issue was actually a regression caused by the fix to JDK-7162125:
[macosx] A font has different behaviour for ligatures depending on its
creation mode
in which we have added cascaded font list to find the real fonts that
CFont uses, so that there is no need to use "negative" glyph code for
finding the fallback fonts
using the "subsititution"/"fallback" mechanism used by osx code.
However, the above logic of using cascaded font list in CFont does not
take into account of using JRE provided fonts like all those Lucida* ttf
in jdk/lib/fonts/, so
when a glyph (in this intance, arabic 'alef' character) is intended to
be rendered in Menlo font in italic style, osx will not be able to find
the glyph in Menlo-Italic font
and neither in all the cascaded system fonts provided by CoreText, so it
results in empty box.
Before 7162125 fix, the fallback code in
CoreTextSupport.m#CTS_CopyCTFallbackFontAndGlyphForJavaGlyphCode() uses
JRSFontCreateFallbackFontForCharacters()
was adding jre/lib/fonts to the fallback list which was causing the
glyph to be found in "LucidaBrightRegular.ttf" font and the glyph was
rendered.
So, the proposed fix is to add jre provided font "Lucida Sans Regular"
to the cascaded list so that we get the "alef" glyph.
The reason for choosing "Lucida Sans Regular" over "Lucida Bright
Regular" is, because it is the largest font file in jre and has all the
glyph codepoints that no other font in the jre has,
so we will not lose out on any codepoints and will help us in not
getting missing glyph.
webrev: http://cr.openjdk.java.net/~psadhukhan/8147002/webrev.00/
Regards
Prasanta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20170209/4ad48b17/attachment.html>
More information about the 2d-dev
mailing list