From 746edb23f2fd9fceef473aea742ad471b9599730 Mon Sep 17 00:00:00 2001 From: Peter Wilson Date: Thu, 11 May 2017 04:26:41 +0000 Subject: [PATCH] Emoji: Update Twemoji to version 2.2.5 Updates Twemoji and adds a second Emoji 4 test to include a shrugging man. Emoji 4 is being implemented gradually, while some browsers now support the female technologist, the indifferent shrugging man is breaking things with his presence. Props peterwilsoncc, pento for code review. Fixes #40615. Built from https://develop.svn.wordpress.org/trunk@40626 git-svn-id: http://core.svn.wordpress.org/trunk@40487 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/formatting.php | 8 +++---- wp-includes/general-template.php | 2 +- wp-includes/js/wp-emoji-loader.js | 31 +++++++++++++++++++++++---- wp-includes/js/wp-emoji-loader.min.js | 2 +- wp-includes/version.php | 2 +- 5 files changed, 34 insertions(+), 11 deletions(-) diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 556c264bfe..3216363156 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -5012,7 +5012,7 @@ function _print_emoji_detection_script() { * * @param string The emoji base URL for png images. */ - 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/2.2.1/72x72/' ), + 'baseUrl' => apply_filters( 'emoji_url', 'https://s.w.org/images/core/emoji/2.2.5/72x72/' ), /** * Filters the extension of the emoji png files. @@ -5030,7 +5030,7 @@ function _print_emoji_detection_script() { * * @param string The emoji base URL for svg images. */ - 'svgUrl' => apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2.2.1/svg/' ), + 'svgUrl' => apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2.2.5/svg/' ), /** * Filters the extension of the emoji SVG files. @@ -5077,7 +5077,7 @@ function _print_emoji_detection_script() { ?> $urls ) { $unique_urls = array(); diff --git a/wp-includes/js/wp-emoji-loader.js b/wp-includes/js/wp-emoji-loader.js index 236415c162..9c5043f499 100644 --- a/wp-includes/js/wp-emoji-loader.js +++ b/wp-includes/js/wp-emoji-loader.js @@ -19,7 +19,7 @@ */ function browserSupportsEmoji( type ) { var stringFromCharCode = String.fromCharCode, - flag, flag2, technologist, technologist2; + flag, flag2, emoji41, emoji42; if ( ! context || ! context.fillText ) { return false; @@ -79,6 +79,26 @@ return flag !== flag2; case 'emoji4': + /* + * Emoji 4 support was implemented gradually, multiple tests are used to + * confirm support. + * + * In this test we try rendering man shrugging, light skin tone and compare + * it to how it would look if the browser does not render it correctly + * (person shrugging: light skin town + male sign). + */ + context.fillText( stringFromCharCode( 55358, 56631, 55356, 57339, 8205, 9794, 65039 ), 0, 0 ); + emoji41 = canvas.toDataURL(); + + context.clearRect( 0, 0, canvas.width, canvas.height ); + + context.fillText( stringFromCharCode( 55358, 56631, 55356, 57339, 9794, 65039 ), 0, 0 ); + emoji42 = canvas.toDataURL(); + + if ( emoji41 !== emoji42 ) { + return false; + } + /* * Emoji 4 has the best technologists. So does WordPress! * @@ -86,15 +106,18 @@ * then compare it to how it would look if the browser doesn't render it correctly * (woman technologist: medium skin tone + personal computer). */ + // Cleanup from previous test. + context.clearRect( 0, 0, canvas.width, canvas.height ); + context.fillText( stringFromCharCode( 55357, 56425, 55356, 57341, 8205, 55357, 56507), 0, 0 ); - technologist = canvas.toDataURL(); + emoji41 = canvas.toDataURL(); context.clearRect( 0, 0, canvas.width, canvas.height ); context.fillText( stringFromCharCode( 55357, 56425, 55356, 57341, 55357, 56507), 0, 0 ); - technologist2 = canvas.toDataURL(); + emoji42 = canvas.toDataURL(); - return technologist !== technologist2; + return emoji41 !== emoji42; } return false; diff --git a/wp-includes/js/wp-emoji-loader.min.js b/wp-includes/js/wp-emoji-loader.min.js index 7a3312b821..ebc28c35e7 100644 --- a/wp-includes/js/wp-emoji-loader.min.js +++ b/wp-includes/js/wp-emoji-loader.min.js @@ -1 +1 @@ -!function(a,b,c){function d(a){var b,c,d,e,f=String.fromCharCode;if(!k||!k.fillText)return!1;switch(k.clearRect(0,0,j.width,j.height),k.textBaseline="top",k.font="600 32px Arial",a){case"flag":return k.fillText(f(55356,56826,55356,56819),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57331,8203,55356,57096),0,0),c=j.toDataURL(),b===c&&(k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57331,65039,8205,55356,57096),0,0),b=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55356,57331,55356,57096),0,0),c=j.toDataURL(),b!==c);case"emoji4":return k.fillText(f(55357,56425,55356,57341,8205,55357,56507),0,0),d=j.toDataURL(),k.clearRect(0,0,j.width,j.height),k.fillText(f(55357,56425,55356,57341,55357,56507),0,0),e=j.toDataURL(),d!==e}return!1}function e(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i,j=b.createElement("canvas"),k=j.getContext&&j.getContext("2d");for(i=Array("flag","emoji4"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h