Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Unified Diff: tools/sk_tool_utils.cpp

Issue 1984943002: Implement support for rendering color emoji on Windows (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: rebase Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ports/SkScalerContext_win_dw.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/sk_tool_utils.cpp
diff --git a/tools/sk_tool_utils.cpp b/tools/sk_tool_utils.cpp
index 9278c84807dcff0b514021a48970f7eb0c0d4bc1..8303f0979d4407e97b81c2d2e89ef3c66b5c5b18 100644
--- a/tools/sk_tool_utils.cpp
+++ b/tools/sk_tool_utils.cpp
@@ -12,6 +12,8 @@
#include "SkBitmap.h"
#include "SkCanvas.h"
#include "SkCommonFlags.h"
+#include "SkFontMgr.h"
+#include "SkFontStyle.h"
#include "SkPoint3.h"
#include "SkShader.h"
#include "SkTestScalerContext.h"
@@ -72,6 +74,9 @@ const char* platform_os_emoji() {
if (!strncmp(osName, "Mac", 3)) {
return "SBIX";
}
+ if (!strncmp(osName, "Win", 3)) {
+ return "COLR";
+ }
return "";
}
@@ -82,6 +87,23 @@ sk_sp<SkTypeface> emoji_typeface() {
if (!strcmp(sk_tool_utils::platform_os_emoji(), "SBIX")) {
return SkTypeface::MakeFromName("Apple Color Emoji", SkFontStyle());
}
+ if (!strcmp(sk_tool_utils::platform_os_emoji(), "COLR")) {
+ sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
+ const char *colorEmojiFontName = "Segoe UI Emoji";
+ sk_sp<SkTypeface> typeface(fm->matchFamilyStyle(colorEmojiFontName, SkFontStyle()));
+ if (typeface) {
+ return typeface;
+ }
+ sk_sp<SkTypeface> fallback(fm->matchFamilyStyleCharacter(
+ colorEmojiFontName, SkFontStyle(), nullptr /* bcp47 */, 0 /* bcp47Count */,
+ 0x1f4b0 /* character: 💰 */));
+ if (fallback) {
+ return fallback;
+ }
+ // If we don't have Segoe UI Emoji and can't find a fallback, try Segoe UI Symbol.
+ // Windows 7 does not have Segoe UI Emoji; Segoe UI Symbol has the (non - color) emoji.
+ return SkTypeface::MakeFromName("Segoe UI Symbol", SkFontStyle());
+ }
return nullptr;
}
@@ -89,7 +111,9 @@ const char* emoji_sample_text() {
if (!strcmp(sk_tool_utils::platform_os_emoji(), "CBDT")) {
return "Hamburgefons";
}
- if (!strcmp(sk_tool_utils::platform_os_emoji(), "SBIX")) {
+ if (!strcmp(sk_tool_utils::platform_os_emoji(), "SBIX") ||
+ !strcmp(sk_tool_utils::platform_os_emoji(), "COLR"))
+ {
return "\xF0\x9F\x92\xB0" "\xF0\x9F\x8F\xA1" "\xF0\x9F\x8E\x85" // 💰🏡🎅
"\xF0\x9F\x8D\xAA" "\xF0\x9F\x8D\x95" "\xF0\x9F\x9A\x80" // 🍪🍕🚀
"\xF0\x9F\x9A\xBB" "\xF0\x9F\x92\xA9" "\xF0\x9F\x93\xB7" // 🚻💩📷
« no previous file with comments | « src/ports/SkScalerContext_win_dw.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698