diff options
-rw-r--r-- | fonts.dtd | 2 | ||||
-rw-r--r-- | src/fccfg.c | 10 | ||||
-rw-r--r-- | src/fcint.h | 2 | ||||
-rw-r--r-- | src/fcxml.c | 2 |
4 files changed, 13 insertions, 3 deletions
@@ -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); |