Index: third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
diff --git a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
index dd67516705b201673ba410be2d6e25eb126894ff..5ae67b7cc5ae5b0103f2bab17a1e5c952d6cbc97 100644 |
--- a/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
+++ b/third_party/WebKit/Source/platform/fonts/AcceptLanguagesResolver.cpp |
@@ -4,58 +4,18 @@ |
#include "platform/fonts/AcceptLanguagesResolver.h" |
-#include "platform/Language.h" |
-#include "platform/text/LocaleToScriptMapping.h" |
-#include <unicode/locid.h> |
+#include "platform/LayoutLocale.h" |
namespace blink { |
-UScriptCode AcceptLanguagesResolver::m_preferredHanScript = USCRIPT_COMMON; |
-const char* AcceptLanguagesResolver::m_preferredHanSkFontMgrLocale = nullptr; |
- |
-// SkFontMgr requires script-based locale names, like "zh-Hant" and "zh-Hans", |
-// instead of "zh-CN" and "zh-TW". |
-static const char* toSkFontMgrLocaleForHan(UScriptCode script) |
-{ |
- switch (script) { |
- case USCRIPT_KATAKANA_OR_HIRAGANA: |
- return "ja-jp"; |
- case USCRIPT_HANGUL: |
- return "ko-kr"; |
- case USCRIPT_SIMPLIFIED_HAN: |
- return "zh-Hans"; |
- case USCRIPT_TRADITIONAL_HAN: |
- return "zh-Hant"; |
- default: |
- ASSERT_NOT_REACHED(); |
- return nullptr; |
- } |
-} |
- |
void AcceptLanguagesResolver::acceptLanguagesChanged( |
const String& acceptLanguages) |
{ |
- // Use the UI locale if it can disambiguate the Unified Han. |
- // Historically we use ICU on Windows. crbug.com/586520 |
-#if OS(WIN) |
- // Since Chrome synchronizes the ICU default locale with its UI locale, |
- // this ICU locale tells the current UI locale of Chrome. |
- m_preferredHanScript = scriptCodeForHanFromLocale( |
- icu::Locale::getDefault().getName(), '_'); |
-#else |
- m_preferredHanScript = scriptCodeForHanFromLocale(defaultLanguage()); |
-#endif |
- if (m_preferredHanScript != USCRIPT_COMMON) { |
- // We don't need additional locale if defaultLanguage() can disambiguate |
- // since it's always passed to matchFamilyStyleCharacter() separately. |
- m_preferredHanSkFontMgrLocale = nullptr; |
- return; |
- } |
- |
- updateFromAcceptLanguages(acceptLanguages); |
+ LayoutLocale::setLocaleForHan( |
+ localeForHanFromAcceptLanguages(acceptLanguages)); |
} |
-void AcceptLanguagesResolver::updateFromAcceptLanguages( |
+const LayoutLocale* AcceptLanguagesResolver::localeForHanFromAcceptLanguages( |
const String& acceptLanguages) |
{ |
// Use the first acceptLanguages that can disambiguate. |
@@ -63,16 +23,12 @@ void AcceptLanguagesResolver::updateFromAcceptLanguages( |
acceptLanguages.split(',', languages); |
for (String token : languages) { |
token = token.stripWhiteSpace(); |
- m_preferredHanScript = scriptCodeForHanFromLocale(token); |
- if (m_preferredHanScript != USCRIPT_COMMON) { |
- m_preferredHanSkFontMgrLocale = toSkFontMgrLocaleForHan( |
- m_preferredHanScript); |
- return; |
- } |
+ const LayoutLocale* locale = LayoutLocale::get(AtomicString(token)); |
+ if (locale->hasScriptForHan()) |
+ return locale; |
} |
- m_preferredHanScript = USCRIPT_COMMON; |
- m_preferredHanSkFontMgrLocale = nullptr; |
+ return nullptr; |
} |
} // namespace blink |