From 6d1d44d5ec5100a3db850dddd7b4e4196e8a5cdb Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 19 Dec 2017 15:51:16 -0500 Subject: [PATCH] Let pattern FC_FONT_VARIATIONS override standard axis variations Ie. flip the merge order. --- src/fcmatch.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/fcmatch.c b/src/fcmatch.c index 4656417..22c3784 100644 --- a/src/fcmatch.c +++ b/src/fcmatch.c @@ -540,12 +540,7 @@ FcFontRenderPrepare (FcConfig *config, FcPatternObjectGetBool (font, FC_VARIABLE_OBJECT, 0, &variable); assert (variable != FcDontCare); if (variable) - { - FcChar8 *vars = NULL; FcStrBufInit (&variations, NULL, 0); - if (FcPatternObjectGetString (pat, FC_FONT_VARIATIONS_OBJECT, 0, &vars) == FcResultMatch) - FcStrBufString (&variations, vars); - } new = FcPatternCreate (); if (!new) @@ -739,11 +734,18 @@ FcFontRenderPrepare (FcConfig *config, } } - if (variable) + if (variable && variations.len) { - FcPatternObjectDel (new, FC_FONT_VARIATIONS_OBJECT); - FcPatternObjectAddString (new, FC_FONT_VARIATIONS_OBJECT, FcStrBufDoneStatic (&variations)); - FcStrBufDestroy (&variations); + FcChar8 *vars = NULL; + if (FcPatternObjectGetString (new, FC_FONT_VARIATIONS_OBJECT, 0, &vars) == FcResultMatch) + { + FcStrBufChar (&variations, ','); + FcStrBufString (&variations, vars); + FcPatternObjectDel (new, FC_FONT_VARIATIONS_OBJECT); + } + + FcPatternObjectAddString (new, FC_FONT_VARIATIONS_OBJECT, FcStrBufDoneStatic (&variations)); + FcStrBufDestroy (&variations); } FcConfigSubstituteWithPat (config, new, pat, FcMatchFont);