Bug 1394661 - Use user locale instead of system locale for font fallback. r?gandalf
Until Firefox 54, font fallback uses user locale. Example, OS is Windows 10 JA with JA UI, Firefox uses JA font for fallback even if Firefox is US version.
But since we changed some locale code on Firefox 55 development cycle, there were some regressions such as
bug 1346674. So we changed fallback locale to system locale (instead of Firefox UX locale) for font selection by
bug 1348259.
It isn't good for old compatibility, so we should use user locale for font fallback like Firefox 54. Now we can get user locale by OSPreferences::GetRegionalPrefsLocales, use it for font fallback
MozReview-Commit-ID: 7qwDDeU1ZPt
--- a/intl/locale/nsLanguageAtomService.cpp
+++ b/intl/locale/nsLanguageAtomService.cpp
@@ -59,21 +59,29 @@ nsLanguageAtomService::LookupCharSet(Not
return NS_Atomize(group);
}
nsIAtom*
nsLanguageAtomService::GetLocaleLanguage()
{
do {
if (!mLocaleLanguage) {
- nsAutoCString locale;
- OSPreferences::GetInstance()->GetSystemLocale(locale);
+ AutoTArray<nsCString, 10> regionalPrefsLocales;
+ if (OSPreferences::GetInstance()->GetRegionalPrefsLocales(
+ regionalPrefsLocales)) {
+ // use lowercase for all language atoms
+ ToLowerCase(regionalPrefsLocales[0]);
+ mLocaleLanguage = NS_Atomize(regionalPrefsLocales[0]);
+ } else {
+ nsAutoCString locale;
+ OSPreferences::GetInstance()->GetSystemLocale(locale);
- ToLowerCase(locale); // use lowercase for all language atoms
- mLocaleLanguage = NS_Atomize(locale);
+ ToLowerCase(locale); // use lowercase for all language atoms
+ mLocaleLanguage = NS_Atomize(locale);
+ }
}
} while (0);
return mLocaleLanguage;
}
nsIAtom*
nsLanguageAtomService::GetLanguageGroup(nsIAtom *aLanguage, bool* aNeedsToCache)