aboutsummaryrefslogtreecommitdiff
path: root/fontconfig/src/fccfg.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2014-07-28 21:23:36 +0200
committermarha <marha@users.sourceforge.net>2014-07-28 21:32:18 +0200
commit777fcfa17aafab62719446e00068f5e61ec946d5 (patch)
treeca0ed3fea46b207daa6cd5bc05382e2d60a1e87f /fontconfig/src/fccfg.c
parent61c36feba19d918885022042ea62d068a698c83d (diff)
parentb33b8d8ae86876b50df96881b96074b3fe177cce (diff)
downloadvcxsrv-777fcfa17aafab62719446e00068f5e61ec946d5.tar.gz
vcxsrv-777fcfa17aafab62719446e00068f5e61ec946d5.tar.bz2
vcxsrv-777fcfa17aafab62719446e00068f5e61ec946d5.zip
Merge remote-tracking branch 'origin/released'
Conflicts: xorg-server/include/servermd.h
Diffstat (limited to 'fontconfig/src/fccfg.c')
-rw-r--r--fontconfig/src/fccfg.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c
index 6d3259513..f8ee8d20e 100644
--- a/fontconfig/src/fccfg.c
+++ b/fontconfig/src/fccfg.c
@@ -1546,10 +1546,38 @@ FcConfigSubstituteWithPat (FcConfig *config,
FcStrSetDestroy (strs);
while (l && (lang = FcStrListNext (l)))
{
+ FcPatternElt *e = FcPatternObjectFindElt (p, FC_LANG_OBJECT);
+
+ if (e)
+ {
+ FcValueListPtr ll;
+
+ for (ll = FcPatternEltValues (e); ll; ll = FcValueListNext (ll))
+ {
+ FcValue vv = FcValueCanonicalize (&ll->value);
+
+ if (vv.type == FcTypeLangSet)
+ {
+ FcLangSet *ls = FcLangSetCreate ();
+ FcBool b;
+
+ FcLangSetAdd (ls, lang);
+ b = FcLangSetContains (vv.u.l, ls);
+ FcLangSetDestroy (ls);
+ if (b)
+ goto bail_lang;
+ }
+ else
+ if (FcStrCmpIgnoreCase (vv.u.s, lang) == 0)
+ goto bail_lang;
+ }
+ }
v.type = FcTypeString;
v.u.s = lang;
+
FcPatternObjectAddWithBinding (p, FC_LANG_OBJECT, v, FcValueBindingWeak, FcTrue);
}
+ bail_lang:
FcStrListDone (l);
}
if (FcPatternObjectGet (p, FC_PRGNAME_OBJECT, 0, &v) == FcResultNoMatch)