RFR: 8290866: Apple Color Emoji turns gray after JavaFX version 18 [v3]

Kevin Rushforth kcr at openjdk.org
Fri Feb 24 22:12:21 UTC 2023


On Fri, 24 Feb 2023 21:21:54 GMT, Phil Race <prr at openjdk.org> wrote:

>> This fix properly supports colour rendering of Emoji on macOS
>> 
>> 
>> On other platforms the Emoji will be rendered as ordinary greyscale glyphs - if there is font
>> support for the requested code point.
>> 
>> A simple manual test is provided which uses a Text node, Label control
>> and editable TextField control.
>> 
>> Some highlights of the code
>> - To determine if it is a color emoji glyph probe the 'sbix' font table which is what is used by Apple
>> - Text runs now break at an Emoji glyph
>> - The Emoji is retrieved as an BGRA image - ie 4 channel including alpha
>> - It was necessary to retrieve the Emoji glyph bounds via a different CoreText API since
>>    the bounds that were being retrieved were wrong for the Emoji image - causing clipping
>> - It was necessary to retrieve the Emoji code point advance via a CoreText API since
>>    the HMTX metrics were very wrong - causing overlapping glyphs
>> - drawString checks if it is an Emoji run and redirects to a new drawColorGlyph method
>>    which draws the image as a texture
>> - All 3 rendering pipelines have this support and have been verified on all 3 desktop platforms
>
> Phil Race has updated the pull request incrementally with one additional commit since the last revision:
> 
>   8290866

Looks good. I'll reapprove if you want to fix the typo in the instructions.

tests/manual/text/EmojiTest.java line 54:

> 52:         transparent background pixels.
> 53:         There are 3 different ways it is displayed to verify
> 54:         1) Text node. 2) Label control, 3) TextFile Control

Minor: typo, "TextFile" should be "TextField".

-------------

Marked as reviewed by kcr (Lead).

PR: https://git.openjdk.org/jfx/pull/1047


More information about the openjfx-dev mailing list