[OpenJDK 2D-Dev] [PATCH] Make automatic font substitution on macOS work for surrogate pairs

Philip Race philip.race at oracle.com
Wed Oct 26 23:17:50 UTC 2016


I can file a bug on this if I can't find one.
If you can email me the test it will help even if it is not checked in.


On 10/26/16, 6:28 AM, Dmitry Batrak wrote:
> Hello,
> I'd like to propose a patch to make automatic font substitution on 
> macOS work for surrogate pairs.
> I have a Contributor status via agreement signed by JetBrains, hope 
> someone can sponsor the patch.
> Currently, if requested font cannot render a Unicode character 
> represented by a surrogate pair,
> no substitution is performed - Font.canDisplay will return false, and 
> the character will be
> rendered as a 'missing' glyph. This behaviour doesn't violate any 
> specification, but it looks like
> it can be easily improved, as underlying OS framework used under the 
> hood does support surrogate pairs.
> The proposed change consists of two parts. First part is adjusting the 
> code in CoreTextSupport.m
> to handle surrogate pairs while performing char-to-glyph mapping, by 
> encoding non-displayable
> surrogate pairs using negative values of the codepoint, similar to how 
> non-displayable BMP characters
> are encoded. Second part is fixing the rendering code (in 
> CGGlyphImages.m), where wrong type was used
> to pass character values around, so that code for surrogate pairs 
> handling, already present there,
> could work.
> I didn't include a test for this change, as it would depend on 
> OS-specific font fallback mechanism
> and fonts installed, but I can create one that will work on a latest 
> version of macOS with default
> fonts, if needed.
> Webrev for the fix is available at
> http://cr.openjdk.java.net/~avu/rfe_surrogates/webrev.00/ 
> <http://cr.openjdk.java.net/%7Eavu/rfe_surrogates/webrev.00/>
> (kindly posted by my colleague, having access to cr.openjdk.java.net 
> <http://cr.openjdk.java.net>).
> To my knowledge, there's no ticket in OpenJDK issue tracker for the 
> proposed enhancement.
> I can submit it via http://bugs.java.com/, if that's an obstacle.
> Best regards,
> Dmitry Batrak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20161026/c5d627cc/attachment.html>

More information about the 2d-dev mailing list