diff options
author | wolfbeast <mcwerewolf@gmail.com> | 2018-05-09 17:52:17 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@gmail.com> | 2018-05-09 17:52:17 +0200 |
commit | 2619698a2eb7363940d1e6a2d71a9ce7b366d3f5 (patch) | |
tree | a0e493460026b72f243d932f401409f26ee9a89e /gfx/thebes/gfxPlatformMac.cpp | |
parent | 361748956bfcd31ca0edb5e2c845fb8c043945ba (diff) | |
download | UXP-2619698a2eb7363940d1e6a2d71a9ce7b366d3f5.tar UXP-2619698a2eb7363940d1e6a2d71a9ce7b366d3f5.tar.gz UXP-2619698a2eb7363940d1e6a2d71a9ce7b366d3f5.tar.lz UXP-2619698a2eb7363940d1e6a2d71a9ce7b366d3f5.tar.xz UXP-2619698a2eb7363940d1e6a2d71a9ce7b366d3f5.zip |
Font fallback should detect emoji range for color emoji font.
Diffstat (limited to 'gfx/thebes/gfxPlatformMac.cpp')
-rw-r--r-- | gfx/thebes/gfxPlatformMac.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/gfx/thebes/gfxPlatformMac.cpp b/gfx/thebes/gfxPlatformMac.cpp index 3216f0f07..79684dd19 100644 --- a/gfx/thebes/gfxPlatformMac.cpp +++ b/gfx/thebes/gfxPlatformMac.cpp @@ -18,6 +18,7 @@ #include "nsTArray.h" #include "mozilla/Preferences.h" #include "mozilla/VsyncDispatcher.h" +#include "nsUnicodeProperties.h" #include "qcms.h" #include "gfx2DGlue.h" @@ -29,6 +30,7 @@ using namespace mozilla; using namespace mozilla::gfx; +using namespace mozilla::unicode; // cribbed from CTFontManager.h enum { @@ -195,23 +197,24 @@ gfxPlatformMac::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh, Script aRunScript, nsTArray<const char*>& aFontList) { - if (aNextCh == 0xfe0f) { - aFontList.AppendElement(kFontAppleColorEmoji); + EmojiPresentation emoji = GetEmojiPresentation(aCh); + if (emoji != EmojiPresentation::TextOnly) { + if (aNextCh == kVariationSelector16 || + (aNextCh != kVariationSelector15 && + emoji == EmojiPresentation::EmojiDefault)) { + // if char is followed by VS16, try for a color emoji glyph + aFontList.AppendElement(kFontAppleColorEmoji); + } } aFontList.AppendElement(kFontLucidaGrande); if (!IS_IN_BMP(aCh)) { uint32_t p = aCh >> 16; - uint32_t b = aCh >> 8; if (p == 1) { - if (b >= 0x1f0 && b < 0x1f7) { - aFontList.AppendElement(kFontAppleColorEmoji); - } else { - aFontList.AppendElement(kFontAppleSymbols); - aFontList.AppendElement(kFontSTIXGeneral); - aFontList.AppendElement(kFontGeneva); - } + aFontList.AppendElement(kFontAppleSymbols); + aFontList.AppendElement(kFontSTIXGeneral); + aFontList.AppendElement(kFontGeneva); } else if (p == 2) { // OSX installations with MS Office may have these fonts aFontList.AppendElement(kFontMingLiUExtB); |