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

Unified Diff: third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp

Issue 1911863002: Revert of Add code to call skia's matchFamilyStyleCharacter API, which uses the (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@fallbackproxy
Patch Set: Created 4 years, 8 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
Index: third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
diff --git a/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp b/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
index 5ad1346766c4fe1af86bfd1490e90f6a37ac2342..dd414101083c219e1f8b9c1e9b53ab62966701de 100644
--- a/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
+++ b/third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
@@ -67,6 +67,23 @@
// http://www.unicode.org/reports/tr51/proposed.html#Emoji_Script
static const char* kAndroidColorEmojiLocale = "und-Zsye";
+// SkFontMgr requires script-based locale names, like "zh-Hant" and "zh-Hans",
+// instead of "zh-CN" and "zh-TW".
+static CString toSkFontMgrLocale(const String& locale)
+{
+ if (!locale.startsWith("zh", TextCaseInsensitive))
+ return locale.ascii();
+
+ switch (localeToScriptCodeForFontSelection(locale)) {
+ case USCRIPT_SIMPLIFIED_HAN:
+ return "zh-Hans";
+ case USCRIPT_TRADITIONAL_HAN:
+ return "zh-Hant";
+ default:
+ return locale.ascii();
+ }
+}
+
// This function is called on android or when we are emulating android fonts on linux and the
// embedder has overriden the default fontManager with WebFontRendering::setSkiaFontMgr.
// static
@@ -154,6 +171,25 @@
return fontDataFromFontPlatformData(fontPlatformData, shouldRetain);
}
+#if OS(WIN) || OS(LINUX)
+static inline SkFontStyle fontStyle(const FontDescription& fontDescription)
+{
+ int width = static_cast<int>(fontDescription.stretch());
+ int weight = (fontDescription.weight() - FontWeight100 + 1) * 100;
+ SkFontStyle::Slant slant = fontDescription.style() == FontStyleItalic
+ ? SkFontStyle::kItalic_Slant
+ : SkFontStyle::kUpright_Slant;
+ return SkFontStyle(weight, width, slant);
+}
+
+static_assert(static_cast<int>(FontStretchUltraCondensed) == static_cast<int>(SkFontStyle::kUltraCondensed_Width),
+ "FontStretchUltraCondensed should map to kUltraCondensed_Width");
+static_assert(static_cast<int>(FontStretchNormal) == static_cast<int>(SkFontStyle::kNormal_Width),
+ "FontStretchNormal should map to kNormal_Width");
+static_assert(static_cast<int>(FontStretchUltraExpanded) == static_cast<int>(SkFontStyle::kUltaExpanded_Width),
+ "FontStretchUltraExpanded should map to kUltaExpanded_Width");
+#endif
+
PassRefPtr<SkTypeface> FontCache::createTypeface(const FontDescription& fontDescription, const FontFaceCreationParams& creationParams, CString& name)
{
#if !OS(WIN) && !OS(ANDROID)
@@ -184,8 +220,9 @@
if (m_fontManager) {
return adoptRef(useDirectWrite()
- ? m_fontManager->matchFamilyStyle(name.data(), fontDescription.skiaFontStyle())
- : m_fontManager->legacyCreateTypeface(name.data(), fontDescription.skiaFontStyle()));
+ ? m_fontManager->matchFamilyStyle(name.data(), fontStyle(fontDescription))
+ : m_fontManager->legacyCreateTypeface(name.data(), fontStyle(fontDescription))
+ );
}
#endif
@@ -194,7 +231,7 @@
// provided font Manager rather than calling SkTypeface::CreateFromName which may redirect the
// call to the default font Manager.
if (m_fontManager)
- return adoptRef(m_fontManager->matchFamilyStyle(name.data(), fontDescription.skiaFontStyle()));
+ return adoptRef(m_fontManager->matchFamilyStyle(name.data(), fontStyle(fontDescription)));
#endif
// FIXME: Use m_fontManager, SkFontStyle and matchFamilyStyle instead of

Powered by Google App Engine
This is Rietveld 408576698