summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index f980a40de4..9d50196e76 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -627,6 +627,19 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString family, const
FcLangSetAdd(ls, (const FcChar8*)specialLanguages[script]);
FcPatternAddLangSet(pattern, FC_LANG, ls);
FcLangSetDestroy(ls);
+ } else if (!family.isEmpty()) {
+ // If script is common then it may include languages like CJK,
+ // we should attach system default language set to the pattern
+ // to obtain correct font fallback list (i.e. if LANG=zh_CN
+ // then we normally want to use a Chinese font for CJK text;
+ // while a Japanese font should be use for that if LANG=ja)
+ FcPattern *dummy = FcPatternCreate();
+ FcDefaultSubstitute(dummy);
+ FcChar8 *lang = 0;
+ FcResult res = FcPatternGetString(dummy, FC_LANG, 0, &lang);
+ if (res == FcResultMatch)
+ FcPatternAddString(pattern, FC_LANG, lang);
+ FcPatternDestroy(dummy);
}
const char *stylehint = getFcFamilyForStyleHint(styleHint);