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

Reply via email to