summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fonts.dtd2
-rw-r--r--src/fccfg.c10
-rw-r--r--src/fcint.h2
-rw-r--r--src/fcxml.c2
4 files changed, 13 insertions, 3 deletions
diff --git a/fonts.dtd b/fonts.dtd
index 4233b73..f7c2bc9 100644
--- a/fonts.dtd
+++ b/fonts.dtd
@@ -145,7 +145,7 @@
<!ATTLIST edit
name CDATA #REQUIRED
mode (assign|assign_replace|prepend|append|prepend_first|append_last) "assign"
- binding (weak|strong) "weak">
+ binding (weak|strong|same) "weak">
<!--
Elements of expressions follow
diff --git a/src/fccfg.c b/src/fccfg.c
index f2b5576..addd296 100644
--- a/src/fccfg.c
+++ b/src/fccfg.c
@@ -917,8 +917,16 @@ FcConfigAdd (FcValueList **head,
FcBool append,
FcValueList *new)
{
- FcValueList **prev, *last;
+ FcValueList **prev, *last, *v;
+ FcValueBinding sameBinding;
+ if (position)
+ sameBinding = position->binding;
+ else
+ sameBinding = FcValueBindingWeak;
+ for (v = new; v; v = v->next)
+ if (v->binding == FcValueBindingSame)
+ v->binding = sameBinding;
if (append)
{
if (position)
diff --git a/src/fcint.h b/src/fcint.h
index 9546c56..fbdaabd 100644
--- a/src/fcint.h
+++ b/src/fcint.h
@@ -97,7 +97,7 @@ typedef struct _FcSymbolic {
#define FC_MEM_NUM 29
typedef enum _FcValueBinding {
- FcValueBindingWeak, FcValueBindingStrong
+ FcValueBindingWeak, FcValueBindingStrong, FcValueBindingSame
} FcValueBinding;
typedef struct _FcValueList {
diff --git a/src/fcxml.c b/src/fcxml.c
index f76d45f..257b6cc 100644
--- a/src/fcxml.c
+++ b/src/fcxml.c
@@ -1513,6 +1513,8 @@ FcParseEdit (FcConfigParse *parse)
binding = FcValueBindingWeak;
else if (!strcmp ((char *) binding_string, "strong"))
binding = FcValueBindingStrong;
+ else if (!strcmp ((char *) binding_string, "same"))
+ binding = FcValueBindingSame;
else
{
FcConfigMessage (parse, FcSevereWarning, "invalid edit binding \"%s\"", binding_string);