--- source/src/xsettings.c 1970-01-01 01:00:01.000000000 +0100 +++ source.new/src/xsettings.c 2022-10-25 22:50:26.350635015 +0200 @@ -608,16 +608,28 @@ apply_xft_settings (struct x_display_info *dpyinfo, struct xsettings *settings) { -#ifdef HAVE_XFT +#if defined USE_CAIRO || defined HAVE_XFT FcPattern *pat; struct xsettings oldsettings; bool changed = false; +#ifndef HAVE_XFT + cairo_font_options_t *options; +#endif + memset (&oldsettings, 0, sizeof (oldsettings)); pat = FcPatternCreate (); +#ifdef HAVE_XFT XftDefaultSubstitute (dpyinfo->display, XScreenNumberOfScreen (dpyinfo->screen), pat); +#else + FcConfigSubstitute (NULL, pat, FcMatchPattern); + options = cairo_font_options_create (); + cairo_ft_font_options_substitute (options, pat); + cairo_font_options_destroy (options); + FcDefaultSubstitute (pat); +#endif FcPatternGetBool (pat, FC_ANTIALIAS, 0, &oldsettings.aa); FcPatternGetBool (pat, FC_HINTING, 0, &oldsettings.hinting); #ifdef FC_HINT_STYLE @@ -716,8 +728,11 @@ - sizeof "%f") }; char buf[sizeof format + d_formats * d_growth + lf_formats * lf_growth]; - +#ifdef HAVE_XFT XftDefaultSet (dpyinfo->display, pat); +#else + FcPatternDestroy (pat); +#endif store_config_changed_event (Qfont_render, XCAR (dpyinfo->name_list_element)); Vxft_settings