aboutsummaryrefslogtreecommitdiff
path: root/fontconfig
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2012-05-14 16:52:51 +0200
committermarha <marha@users.sourceforge.net>2012-05-14 16:52:51 +0200
commit1a71b50696cc230cd055905a5f9fdbd3fa7c89af (patch)
tree23d0afa2e1458a54c656116205e485900e8edd9d /fontconfig
parent13a63d4f69c0692539448cb3d8e4a0e1ffdf2183 (diff)
downloadvcxsrv-1a71b50696cc230cd055905a5f9fdbd3fa7c89af.tar.gz
vcxsrv-1a71b50696cc230cd055905a5f9fdbd3fa7c89af.tar.bz2
vcxsrv-1a71b50696cc230cd055905a5f9fdbd3fa7c89af.zip
fontconfig libX11 mesa xkeyboard-config pixman git update 14 May 2012
Diffstat (limited to 'fontconfig')
-rw-r--r--fontconfig/conf.d/20-fix-globaladvance.conf8
-rw-r--r--fontconfig/conf.d/20-unhint-small-vera.conf6
-rw-r--r--fontconfig/conf.d/25-unhint-nonlatin.conf30
-rw-r--r--fontconfig/conf.d/30-urw-aliases.conf7
-rw-r--r--fontconfig/conf.d/65-fonts-persian.conf14
-rw-r--r--fontconfig/conf.d/80-delicious.conf2
-rw-r--r--fontconfig/doc/fontconfig-user.sgml3
-rw-r--r--fontconfig/fonts.dtd1
-rw-r--r--fontconfig/src/fccfg.c35
-rw-r--r--fontconfig/src/fcdbg.c27
-rw-r--r--fontconfig/src/fcint.h8
-rw-r--r--fontconfig/src/fclist.c2
-rw-r--r--fontconfig/src/fcxml.c24
13 files changed, 103 insertions, 64 deletions
diff --git a/fontconfig/conf.d/20-fix-globaladvance.conf b/fontconfig/conf.d/20-fix-globaladvance.conf
index 2a9c06325..c62ba597e 100644
--- a/fontconfig/conf.d/20-fix-globaladvance.conf
+++ b/fontconfig/conf.d/20-fix-globaladvance.conf
@@ -7,22 +7,22 @@
FreeType very confused as it forces all widths to match.
Undo this magic by disabling the width forcing code -->
<match target="font">
- <test name="family"><string>GulimChe</string></test>
+ <test name="family" compare="eq" ignore-blanks="true"><string>GulimChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
<match target="font">
- <test name="family"><string>DotumChe</string></test>
+ <test name="family" compare="eq" ignore-blanks="true"><string>DotumChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
<match target="font">
- <test name="family"><string>BatangChe</string></test>
+ <test name="family" compare="eq" ignore-blanks="true"><string>BatangChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
<match target="font">
- <test name="family"><string>GungsuhChe</string></test>
+ <test name="family" compare="eq" ignore-blanks="true"><string>GungsuhChe</string></test>
<edit name="globaladvance"><bool>false</bool></edit>
</match>
</fontconfig>
diff --git a/fontconfig/conf.d/20-unhint-small-vera.conf b/fontconfig/conf.d/20-unhint-small-vera.conf
index c4ebee9d4..c9505ca8e 100644
--- a/fontconfig/conf.d/20-unhint-small-vera.conf
+++ b/fontconfig/conf.d/20-unhint-small-vera.conf
@@ -10,7 +10,7 @@
-->
<match target="font">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Bitstream Vera Sans</string>
</test>
<test name="pixelsize" compare="less">
@@ -22,7 +22,7 @@
</match>
<match target="font">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Bitstream Vera Serif</string>
</test>
<test name="pixelsize" compare="less">
@@ -34,7 +34,7 @@
</match>
<match target="font">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Bitstream Vera Sans Mono</string>
</test>
<test name="pixelsize" compare="less">
diff --git a/fontconfig/conf.d/25-unhint-nonlatin.conf b/fontconfig/conf.d/25-unhint-nonlatin.conf
index ffb70c69f..9adffa71a 100644
--- a/fontconfig/conf.d/25-unhint-nonlatin.conf
+++ b/fontconfig/conf.d/25-unhint-nonlatin.conf
@@ -5,7 +5,7 @@
<!-- We can't hint CJK fonts well, so turn off hinting for CJK fonts. -->
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Kochi Mincho</string>
</test>
<edit name="hinting" mode="assign">
@@ -13,7 +13,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Kochi Gothic</string>
</test>
<edit name="hinting" mode="assign">
@@ -21,7 +21,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Sazanami Mincho</string>
</test>
<edit name="hinting" mode="assign">
@@ -29,7 +29,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Sazanami Gothic</string>
</test>
<edit name="hinting" mode="assign">
@@ -37,7 +37,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Baekmuk Batang</string>
</test>
<edit name="hinting" mode="assign">
@@ -45,7 +45,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Baekmuk Dotum</string>
</test>
<edit name="hinting" mode="assign">
@@ -53,7 +53,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Baekmuk Gulim</string>
</test>
<edit name="hinting" mode="assign">
@@ -61,7 +61,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Baekmuk Headline</string>
</test>
<edit name="hinting" mode="assign">
@@ -69,7 +69,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL Mingti2L Big5</string>
</test>
<edit name="hinting" mode="assign">
@@ -77,7 +77,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL ShanHeiSun Uni</string>
</test>
<edit name="hinting" mode="assign">
@@ -85,7 +85,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL KaitiM Big5</string>
</test>
<edit name="hinting" mode="assign">
@@ -93,7 +93,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL ZenKai Uni</string>
</test>
<edit name="hinting" mode="assign">
@@ -101,7 +101,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL SungtiL GB</string>
</test>
<edit name="hinting" mode="assign">
@@ -109,7 +109,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>AR PL KaitiM GB</string>
</test>
<edit name="hinting" mode="assign">
@@ -117,7 +117,7 @@
</edit>
</match>
<match target="font">
- <test name="family" compare="eq">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>ZYSong18030</string>
</test>
<edit name="hinting" mode="assign">
diff --git a/fontconfig/conf.d/30-urw-aliases.conf b/fontconfig/conf.d/30-urw-aliases.conf
index 359f9fbfe..aae06acd6 100644
--- a/fontconfig/conf.d/30-urw-aliases.conf
+++ b/fontconfig/conf.d/30-urw-aliases.conf
@@ -29,13 +29,8 @@
<family>Zapf Dingbats</family>
<accept><family>Dingbats</family></accept>
</alias>
- <!-- workaround for Bug#19128 -->
- <alias binding="same">
- <family>ZapfDingbats</family>
- <accept><family>Dingbats</family></accept>
- </alias>
<match target="pattern">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Symbol</string>
</test>
<edit name="family" mode="append" binding="same">
diff --git a/fontconfig/conf.d/65-fonts-persian.conf b/fontconfig/conf.d/65-fonts-persian.conf
index 0033675a4..ea0066120 100644
--- a/fontconfig/conf.d/65-fonts-persian.conf
+++ b/fontconfig/conf.d/65-fonts-persian.conf
@@ -181,7 +181,7 @@
<!-- Register the fonts that we actually do have -->
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Elham</string>
</test>
<edit name="foundry">
@@ -190,7 +190,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Homa</string>
</test>
<edit name="foundry">
@@ -199,7 +199,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Koodak</string>
</test>
<edit name="foundry">
@@ -208,7 +208,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Nazli</string>
</test>
<edit name="foundry">
@@ -217,7 +217,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Roya</string>
</test>
<edit name="foundry">
@@ -226,7 +226,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Terafik</string>
</test>
<edit name="foundry">
@@ -235,7 +235,7 @@
</match>
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Titr</string>
</test>
<edit name="foundry">
diff --git a/fontconfig/conf.d/80-delicious.conf b/fontconfig/conf.d/80-delicious.conf
index 728f50cae..845647bed 100644
--- a/fontconfig/conf.d/80-delicious.conf
+++ b/fontconfig/conf.d/80-delicious.conf
@@ -5,7 +5,7 @@
<!-- Delicious 'heavy' variant says its Medium weight -->
<match target="scan">
- <test name="family">
+ <test name="family" compare="eq" ignore-blanks="true">
<string>Delicious</string>
</test>
<test name="style">
diff --git a/fontconfig/doc/fontconfig-user.sgml b/fontconfig/doc/fontconfig-user.sgml
index 86f2b3299..22d2ad355 100644
--- a/fontconfig/doc/fontconfig-user.sgml
+++ b/fontconfig/doc/fontconfig-user.sgml
@@ -396,7 +396,8 @@ above). 'compare' can be one of "eq", "not_eq", "less", "less_eq", "more", "more
"not_contains". 'qual' may either be the default, "any", in which case the match
succeeds if any value associated with the property matches the test value, or
"all", in which case all of the values associated with the property must
-match the test value. When used in a &lt;match target="font"&gt; element,
+match the test value. 'ignore-blanks' takes a boolean value. if 'ignore-blanks' is set "true", any blanks in the string will be ignored on its comparison. this takes effects only when compare="eq" or compare="not_eq".
+When used in a &lt;match target="font"&gt; element,
the target= attribute in the &lt;test&gt; element selects between matching
the original pattern or the font. "default" selects whichever target the
outer &lt;match&gt; element has selected.
diff --git a/fontconfig/fonts.dtd b/fontconfig/fonts.dtd
index e1e8b7382..255367cf5 100644
--- a/fontconfig/fonts.dtd
+++ b/fontconfig/fonts.dtd
@@ -159,6 +159,7 @@
qual (any|all|first|not_first) "any"
name CDATA #REQUIRED
target (pattern|font|default) "default"
+ ignore-blanks (#PCDATA) "false"
compare (eq|not_eq|less|less_eq|more|more_eq|contains|not_contains) "eq">
<!--
diff --git a/fontconfig/src/fccfg.c b/fontconfig/src/fccfg.c
index f9cdaaf46..31c427636 100644
--- a/fontconfig/src/fccfg.c
+++ b/fontconfig/src/fccfg.c
@@ -691,12 +691,14 @@ FcConfigPromote (FcValue v, FcValue u)
FcBool
FcConfigCompareValue (const FcValue *left_o,
- FcOp op,
+ FcOp op_,
const FcValue *right_o)
{
FcValue left = FcValueCanonicalize(left_o);
FcValue right = FcValueCanonicalize(right_o);
FcBool ret = FcFalse;
+ FcOp op = FC_OP_GET_OP (op_);
+ int flags = FC_OP_GET_FLAGS (op_);
left = FcConfigPromote (left, right);
right = FcConfigPromote (right, left);
@@ -751,13 +753,19 @@ FcConfigCompareValue (const FcValue *left_o,
switch (op) {
case FcOpEqual:
case FcOpListing:
- ret = FcStrCmpIgnoreCase (left.u.s, right.u.s) == 0;
+ if (flags & FcOpFlagIgnoreBlanks)
+ ret = FcStrCmpIgnoreBlanksAndCase (left.u.s, right.u.s) == 0;
+ else
+ ret = FcStrCmpIgnoreCase (left.u.s, right.u.s) == 0;
break;
case FcOpContains:
ret = FcStrStrIgnoreCase (left.u.s, right.u.s) != 0;
break;
case FcOpNotEqual:
- ret = FcStrCmpIgnoreCase (left.u.s, right.u.s) != 0;
+ if (flags & FcOpFlagIgnoreBlanks)
+ ret = FcStrCmpIgnoreBlanksAndCase (left.u.s, right.u.s) != 0;
+ else
+ ret = FcStrCmpIgnoreCase (left.u.s, right.u.s) != 0;
break;
case FcOpNotContains:
ret = FcStrStrIgnoreCase (left.u.s, right.u.s) == 0;
@@ -872,8 +880,9 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
FcResult r;
FcMatrix *m;
FcChar8 *str;
+ FcOp op = FC_OP_GET_OP (e->op);
- switch (e->op) {
+ switch (op) {
case FcOpInteger:
v.type = FcTypeInteger;
v.u.i = e->u.ival;
@@ -961,7 +970,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
{
switch (vl.type) {
case FcTypeDouble:
- switch (e->op) {
+ switch (op) {
case FcOpPlus:
v.type = FcTypeDouble;
v.u.d = vl.u.d + vr.u.d;
@@ -990,7 +999,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
}
break;
case FcTypeBool:
- switch (e->op) {
+ switch (op) {
case FcOpOr:
v.type = FcTypeBool;
v.u.b = vl.u.b || vr.u.b;
@@ -1005,7 +1014,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
}
break;
case FcTypeString:
- switch (e->op) {
+ switch (op) {
case FcOpPlus:
v.type = FcTypeString;
str = FcStrPlus (vl.u.s, vr.u.s);
@@ -1021,7 +1030,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
}
break;
case FcTypeMatrix:
- switch (e->op) {
+ switch (op) {
case FcOpTimes:
v.type = FcTypeMatrix;
m = malloc (sizeof (FcMatrix));
@@ -1042,7 +1051,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
}
break;
case FcTypeCharSet:
- switch (e->op) {
+ switch (op) {
case FcOpPlus:
v.type = FcTypeCharSet;
v.u.c = FcCharSetUnion (vl.u.c, vr.u.c);
@@ -1061,7 +1070,7 @@ FcConfigEvaluate (FcPattern *p, FcExpr *e)
}
break;
case FcTypeLangSet:
- switch (e->op) {
+ switch (op) {
case FcOpPlus:
v.type = FcTypeLangSet;
v.u.l = FcLangSetUnion (vl.u.l, vr.u.l);
@@ -1186,7 +1195,7 @@ FcConfigMatchValueList (FcPattern *p,
while (e)
{
/* Compute the value of the match expression */
- if (e->op == FcOpComma)
+ if (FC_OP_GET_OP (e->op) == FcOpComma)
{
value = FcConfigEvaluate (p, e->u.tree.left);
e = e->u.tree.right;
@@ -1230,7 +1239,7 @@ FcConfigValues (FcPattern *p, FcExpr *e, FcValueBinding binding)
if (!l)
return 0;
FcMemAlloc (FC_MEM_VALLIST, sizeof (FcValueList));
- if (e->op == FcOpComma)
+ if (FC_OP_GET_OP (e->op) == FcOpComma)
{
l->value = FcConfigEvaluate (p, e->u.tree.left);
l->next = FcConfigValues (p, e->u.tree.right, binding);
@@ -1518,7 +1527,7 @@ FcConfigSubstituteWithPat (FcConfig *config,
break;
}
}
- switch (e->op) {
+ switch (FC_OP_GET_OP (e->op)) {
case FcOpAssign:
/*
* If there was a test, then replace the matched
diff --git a/fontconfig/src/fcdbg.c b/fontconfig/src/fcdbg.c
index 10f3cc9aa..a1ed2b2dd 100644
--- a/fontconfig/src/fcdbg.c
+++ b/fontconfig/src/fcdbg.c
@@ -185,9 +185,18 @@ FcPatternPrint (const FcPattern *p)
printf ("\n");
}
+#define FcOpFlagsPrint(_o_) \
+ { \
+ int f = FC_OP_GET_FLAGS (_o_); \
+ if (f & FcOpFlagIgnoreBlanks) \
+ printf ("(ignore blanks)"); \
+ }
+
void
-FcOpPrint (FcOp op)
+FcOpPrint (FcOp op_)
{
+ FcOp op = FC_OP_GET_OP (op_);
+
switch (op) {
case FcOpInteger: printf ("Integer"); break;
case FcOpDouble: printf ("Double"); break;
@@ -208,8 +217,8 @@ FcOpPrint (FcOp op)
case FcOpQuest: printf ("Quest"); break;
case FcOpOr: printf ("Or"); break;
case FcOpAnd: printf ("And"); break;
- case FcOpEqual: printf ("Equal"); break;
- case FcOpNotEqual: printf ("NotEqual"); break;
+ case FcOpEqual: printf ("Equal"); FcOpFlagsPrint (op_); break;
+ case FcOpNotEqual: printf ("NotEqual"); FcOpFlagsPrint (op_); break;
case FcOpLess: printf ("Less"); break;
case FcOpLessEqual: printf ("LessEqual"); break;
case FcOpMore: printf ("More"); break;
@@ -227,7 +236,7 @@ FcOpPrint (FcOp op)
case FcOpCeil: printf ("Ceil"); break;
case FcOpRound: printf ("Round"); break;
case FcOpTrunc: printf ("Trunc"); break;
- case FcOpListing: printf ("Listing"); break;
+ case FcOpListing: printf ("Listing"); FcOpFlagsPrint (op_); break;
case FcOpInvalid: printf ("Invalid"); break;
}
}
@@ -236,7 +245,7 @@ void
FcExprPrint (const FcExpr *expr)
{
if (!expr) printf ("none");
- else switch (expr->op) {
+ else switch (FC_OP_GET_OP (expr->op)) {
case FcOpInteger: printf ("%d", expr->u.ival); break;
case FcOpDouble: printf ("%g", expr->u.dval); break;
case FcOpString: printf ("\"%s\"", expr->u.sval); break;
@@ -287,7 +296,7 @@ FcExprPrint (const FcExpr *expr)
case FcOpComma:
FcExprPrint (expr->u.tree.left);
printf (" ");
- switch (expr->op) {
+ switch (FC_OP_GET_OP (expr->op)) {
case FcOpAssign: printf ("Assign"); break;
case FcOpAssignReplace: printf ("AssignReplace"); break;
case FcOpPrependFirst: printf ("PrependFirst"); break;
@@ -296,14 +305,14 @@ FcExprPrint (const FcExpr *expr)
case FcOpAppendLast: printf ("AppendLast"); break;
case FcOpOr: printf ("Or"); break;
case FcOpAnd: printf ("And"); break;
- case FcOpEqual: printf ("Equal"); break;
- case FcOpNotEqual: printf ("NotEqual"); break;
+ case FcOpEqual: printf ("Equal"); FcOpFlagsPrint (expr->op); break;
+ case FcOpNotEqual: printf ("NotEqual"); FcOpFlagsPrint (expr->op); break;
case FcOpLess: printf ("Less"); break;
case FcOpLessEqual: printf ("LessEqual"); break;
case FcOpMore: printf ("More"); break;
case FcOpMoreEqual: printf ("MoreEqual"); break;
case FcOpContains: printf ("Contains"); break;
- case FcOpListing: printf ("Listing"); break;
+ case FcOpListing: printf ("Listing"); FcOpFlagsPrint (expr->op); break;
case FcOpNotContains: printf ("NotContains"); break;
case FcOpPlus: printf ("Plus"); break;
case FcOpMinus: printf ("Minus"); break;
diff --git a/fontconfig/src/fcint.h b/fontconfig/src/fcint.h
index a982b7710..a89aae1ad 100644
--- a/fontconfig/src/fcint.h
+++ b/fontconfig/src/fcint.h
@@ -244,6 +244,14 @@ typedef enum _FcOp {
FcOpInvalid
} FcOp;
+typedef enum _FcOpFlags {
+ FcOpFlagIgnoreBlanks = 1 << 0
+} FcOpFlags;
+
+#define FC_OP_GET_OP(_x_) ((_x_) & 0xffff)
+#define FC_OP_GET_FLAGS(_x_) (((_x_) & 0xffff0000) >> 16)
+#define FC_OP(_x_,_f_) (FC_OP_GET_OP (_x_) | ((_f_) << 16))
+
typedef struct _FcExpr {
FcOp op;
union {
diff --git a/fontconfig/src/fclist.c b/fontconfig/src/fclist.c
index 331352cd8..56f04329e 100644
--- a/fontconfig/src/fclist.c
+++ b/fontconfig/src/fclist.c
@@ -148,7 +148,7 @@ FcListValueListMatchAny (FcValueListPtr patOrig, /* pattern */
* where it requires an exact match)
*/
if (FcConfigCompareValue (&fnt->value,
- FcOpListing,
+ FC_OP (FcOpListing, FcOpFlagIgnoreBlanks),
&pat->value))
break;
}
diff --git a/fontconfig/src/fcxml.c b/fontconfig/src/fcxml.c
index 708e131f9..c49529a81 100644
--- a/fontconfig/src/fcxml.c
+++ b/fontconfig/src/fcxml.c
@@ -195,7 +195,7 @@ FcExprDestroy (FcExpr *e)
{
if (!e)
return;
- switch (e->op) {
+ switch (FC_OP_GET_OP (e->op)) {
case FcOpInteger:
break;
case FcOpDouble:
@@ -571,7 +571,7 @@ FcTypecheckExpr (FcConfigParse *parse, FcExpr *expr, FcType type)
if (!expr)
return;
- switch (expr->op) {
+ switch (FC_OP_GET_OP (expr->op)) {
case FcOpInteger:
case FcOpDouble:
FcTypecheckValue (parse, FcTypeDouble, type);
@@ -1687,7 +1687,7 @@ FcParseAlias (FcConfigParse *parse)
FcTest *t = FcTestCreate (parse, FcMatchPattern,
FcQualAny,
(FcChar8 *) FC_FAMILY,
- FcOpEqual,
+ FC_OP (FcOpEqual, FcOpFlagIgnoreBlanks),
family);
if (test)
{
@@ -1911,6 +1911,8 @@ FcParseTest (FcConfigParse *parse)
FcOp compare;
FcExpr *expr;
FcTest *test;
+ const FcChar8 *iblanks_string;
+ int flags = 0;
kind_string = FcConfigGetAttribute (parse, "target");
if (!kind_string)
@@ -1968,13 +1970,27 @@ FcParseTest (FcConfigParse *parse)
return;
}
}
+ iblanks_string = FcConfigGetAttribute (parse, "ignore-blanks");
+ if (iblanks_string)
+ {
+ FcBool f = FcFalse;
+
+ if (!FcNameBool (iblanks_string, &f))
+ {
+ FcConfigMessage (parse,
+ FcSevereWarning,
+ "invalid test ignore-blanks \"%s\"", iblanks_string);
+ }
+ if (f)
+ flags |= FcOpFlagIgnoreBlanks;
+ }
expr = FcPopBinary (parse, FcOpComma);
if (!expr)
{
FcConfigMessage (parse, FcSevereWarning, "missing test expression");
return;
}
- test = FcTestCreate (parse, kind, qual, name, compare, expr);
+ test = FcTestCreate (parse, kind, qual, name, FC_OP (compare, flags), expr);
if (!test)
{
FcConfigMessage (parse, FcSevereError, "out of memory");