| Index: Source/platform/exported/linux/WebFontInfo.cpp
|
| diff --git a/Source/platform/exported/linux/WebFontInfo.cpp b/Source/platform/exported/linux/WebFontInfo.cpp
|
| index e011ef66e32eb5d14f8a9c4c74c30967265e1720..10b2467cf31ee590531118c6c4662d04446a4ed0 100644
|
| --- a/Source/platform/exported/linux/WebFontInfo.cpp
|
| +++ b/Source/platform/exported/linux/WebFontInfo.cpp
|
| @@ -61,7 +61,7 @@ void WebFontInfo::fallbackFontForChar(WebUChar32 c, const char* preferredLocale,
|
| fcvalue.u.b = FcTrue;
|
| FcPatternAdd(pattern, FC_SCALABLE, fcvalue, FcFalse);
|
|
|
| - if (preferredLocale) {
|
| + if (preferredLocale && strlen(preferredLocale)) {
|
| FcLangSet* langset = FcLangSetCreate();
|
| FcLangSetAdd(langset, reinterpret_cast<const FcChar8 *>(preferredLocale));
|
| FcPatternAddLangSet(pattern, FC_LANG, langset);
|
| @@ -71,6 +71,11 @@ void WebFontInfo::fallbackFontForChar(WebUChar32 c, const char* preferredLocale,
|
| FcConfigSubstitute(0, pattern, FcMatchPattern);
|
| FcDefaultSubstitute(pattern);
|
|
|
| + // Default substitution reintroduces an FC_LANG entry,
|
| + // which causes sorting order to change.
|
| + if (!preferredLocale || !strlen(preferredLocale))
|
| + FcPatternDel(pattern, FC_LANG);
|
| +
|
| FcResult result;
|
| FcFontSet* fontSet = FcFontSort(0, pattern, 0, 0, &result);
|
| FcPatternDestroy(pattern);
|
|
|