RFR: 8290866: Apple Color Emoji turns gray after JavaFX version 18
Phil Race
prr at openjdk.org
Thu Feb 23 20:50:10 UTC 2023
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
-------------
Commit messages:
- 8290866
- 8290866
Changes: https://git.openjdk.org/jfx/pull/1047/files
Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1047&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8290866
Stats: 511 lines in 15 files changed: 488 ins; 9 del; 14 mod
Patch: https://git.openjdk.org/jfx/pull/1047.diff
Fetch: git fetch https://git.openjdk.org/jfx pull/1047/head:pull/1047
PR: https://git.openjdk.org/jfx/pull/1047
More information about the openjfx-dev
mailing list