Recently I've found a better fix. Set default hintstyle to "CAIRO_HINT_STYLE_DEFAULT"(which is new), and in the function _cairo_ft_options_merge, change
if (options->base.hint_style == CAIRO_HINT_STYLE_DEFAULT) options->base.hint_style = other->base.hint_style;
to
if (other->base.hint_style != CAIRO_HINT_STYLE_DEFAULT) options->base.hint_style = other->base.hint_style;
This should give fair result, i.e., only if hintstyle is specified with fontconfig would the value configured with gnome-settings-daemon be overriden.
Recently I've found a better fix. Set default hintstyle to "CAIRO_ HINT_STYLE_ DEFAULT" (which is new), and in the function _cairo_ ft_options_ merge, change
if (options- >base.hint_ style == CAIRO_HINT_ STYLE_DEFAULT)
options- >base.hint_ style = other-> base.hint_ style; >base.hint_ style != CAIRO_HINT_ STYLE_DEFAULT)
options- >base.hint_ style = other-> base.hint_ style;
to
if (other-
This should give fair result, i.e., only if hintstyle is specified with fontconfig would the value configured with gnome-settings- daemon be overriden.