diff -r 3d4e9c994f10 -r a86126ab1dd4 wp/wp-includes/js/wp-emoji-loader.js --- a/wp/wp-includes/js/wp-emoji-loader.js Tue Oct 22 16:11:46 2019 +0200 +++ b/wp/wp-includes/js/wp-emoji-loader.js Tue Dec 15 13:49:49 2020 +0100 @@ -69,6 +69,22 @@ switch ( type ) { case 'flag': /* + * Test for Transgender flag compatibility. This flag is shortlisted for the Emoji 13 spec, + * but has landed in Twemoji early, so we can add support for it, too. + * + * To test for support, we try to render it, and compare the rendering to how it would look if + * the browser doesn't render it correctly (white flag emoji + transgender symbol). + */ + isIdentical = emojiSetsRenderIdentically( + [ 0x1F3F3, 0xFE0F, 0x200D, 0x26A7, 0xFE0F ], + [ 0x1F3F3, 0xFE0F, 0x200B, 0x26A7, 0xFE0F ] + ); + + if ( isIdentical ) { + return false; + } + + /* * Test for UN flag compatibility. This is the least supported of the letter locale flags, * so gives us an easy test for full support. * @@ -99,17 +115,23 @@ return ! isIdentical; case 'emoji': /* - * Love is love. + * So easy, even a baby could do it! + * + * To test for Emoji 13 support, try to render a new emoji: Man Feeding Baby. * - * To test for Emoji 12 support, try to render a new emoji: men holding hands, with different skin - * tone modifiers. + * The Man Feeding Baby emoji is a ZWJ sequence combining 👨 Man, a Zero Width Joiner and 🍼 Baby Bottle. + * + * 0xD83D, 0xDC68 == Man emoji. + * 0x200D == Zero-Width Joiner (ZWJ) that links the two code points for the new emoji or + * 0x200B == Zero-Width Space (ZWS) that is rendered for clients not supporting the new emoji. + * 0xD83C, 0xDF7C == Baby Bottle. * * When updating this test for future Emoji releases, ensure that individual emoji that make up the * sequence come from older emoji standards. */ isIdentical = emojiSetsRenderIdentically( - [0xD83D, 0xDC68, 0xD83C, 0xDFFE, 0x200D, 0xD83E, 0xDD1D, 0x200D, 0xD83D, 0xDC68, 0xD83C, 0xDFFC], - [0xD83D, 0xDC68, 0xD83C, 0xDFFE, 0x200B, 0xD83E, 0xDD1D, 0x200B, 0xD83D, 0xDC68, 0xD83C, 0xDFFC] + [0xD83D, 0xDC68, 0x200D, 0xD83C, 0xDF7C], + [0xD83D, 0xDC68, 0x200B, 0xD83C, 0xDF7C] ); return ! isIdentical;