diff --git a/app/text/gimpfontfactory.c b/app/text/gimpfontfactory.c index 4a03c5236e..224ac44e4d 100644 --- a/app/text/gimpfontfactory.c +++ b/app/text/gimpfontfactory.c @@ -792,6 +792,8 @@ gimp_font_factory_load_names (GimpFontFactory *factory, PangoFontDescription *pfd; GString *xml; GString *xml_bold_variant; + GString *xml_italic_variant; + GString *xml_bold_italic_variant; gchar *family = NULL; gchar *style = NULL; gchar *psname = NULL; @@ -885,7 +887,9 @@ gimp_font_factory_load_names (GimpFontFactory *factory, xml = g_string_new (""); /*We can't use faux bold (sometimes real bold) unless it is specified in fontconfig*/ - xml_bold_variant = g_string_new ("\n"); + xml_bold_variant = g_string_new ("\n"); + xml_italic_variant = g_string_new ("\n"); + xml_bold_italic_variant = g_string_new ("\n"); g_string_append_printf (xml, "%s", @@ -893,17 +897,25 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml_bold_variant, "%s", newname); + g_string_append_printf (xml_italic_variant, + "%s", + newname); + g_string_append_printf (xml_bold_italic_variant, + "%s", + newname); g_string_append (xml_bold_variant, "bold"); + g_string_append (xml_italic_variant, + "italic"); + g_string_append (xml_bold_italic_variant, + "bold"); + g_string_append (xml_bold_italic_variant, + "italic"); escaped_fullname = g_markup_escape_text (fullname, -1); g_string_append_printf (xml, "%s", escaped_fullname); - g_string_append_printf (xml_bold_variant, - "%s", - escaped_fullname); - g_free (escaped_fullname); family = g_markup_escape_text (family, -1); g_string_append_printf (xml, @@ -912,15 +924,29 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml_bold_variant, "%s", family); + g_string_append_printf (xml_italic_variant, + "%s", + family); + g_string_append_printf (xml_bold_italic_variant, + "%s", + family); + + g_string_append_printf (xml_bold_variant, + "%s", + escaped_fullname); + g_string_append_printf (xml_italic_variant, + "%s", + escaped_fullname); + g_string_append_printf (xml_bold_italic_variant, + "%s", + escaped_fullname); + g_free (escaped_fullname); g_free (family); escaped_file = g_markup_escape_text (file, -1); g_string_append_printf (xml, "%s", escaped_file); - g_string_append_printf (xml_bold_variant, - "%s", - escaped_file); g_free (escaped_file); if (psname != NULL && g_utf8_validate (psname, -1, NULL)) @@ -929,9 +955,6 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml, "%s", psname); - g_string_append_printf (xml_bold_variant, - "%s", - psname); g_free (psname); } @@ -941,18 +964,21 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml, "%s", style); - g_string_append_printf (xml_bold_variant, - "%s", - style); g_free (style); } g_string_append (xml_bold_variant, "bold"); + g_string_append (xml_bold_italic_variant, "bold"); if (weight != -1) - g_string_append_printf (xml, - "%i", - weight); + { + g_string_append_printf (xml, + "%i", + weight); + g_string_append_printf (xml_italic_variant, + "%i", + weight); + } if (width != -1) { @@ -962,8 +988,17 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml_bold_variant, "%i", width); + g_string_append_printf (xml_italic_variant, + "%i", + width); + g_string_append_printf (xml_bold_italic_variant, + "%i", + width); } + g_string_append (xml_italic_variant, "italic"); + g_string_append (xml_bold_italic_variant, "italic"); + if (slant != -1) { g_string_append_printf (xml, @@ -982,6 +1017,12 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml_bold_variant, "%i", fontversion); + g_string_append_printf (xml_italic_variant, + "%i", + fontversion); + g_string_append_printf (xml_bold_italic_variant, + "%i", + fontversion); } if (index != -1) @@ -989,15 +1030,16 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_string_append_printf (xml, "%i", index); - g_string_append_printf (xml_bold_variant, - "%i", - index); } g_string_append (xml, "\n"); g_string_append (xml_bold_variant, "\n"); + g_string_append (xml_italic_variant, "\n"); + g_string_append (xml_bold_italic_variant, "\n"); + FcConfigParseAndLoadFromMemory (FcConfigGetCurrent (), (const FcChar8 *) xml_bold_italic_variant->str, FcTrue); + FcConfigParseAndLoadFromMemory (FcConfigGetCurrent (), (const FcChar8 *) xml_italic_variant->str, FcTrue); FcConfigParseAndLoadFromMemory (FcConfigGetCurrent (), (const FcChar8 *) xml_bold_variant->str, FcTrue); FcConfigParseAndLoadFromMemory (FcConfigGetCurrent (), (const FcChar8 *) xml->str, FcTrue); @@ -1009,6 +1051,9 @@ gimp_font_factory_load_names (GimpFontFactory *factory, gimp_font_factory_add_font (container, context, pfd, fullname, (const gchar *) file, font_info); g_string_append (global_xml, xml->str); + g_string_append (global_xml, xml_bold_variant->str); + g_string_append (global_xml, xml_italic_variant->str); + g_string_append (global_xml, xml_bold_italic_variant->str); pango_font_description_free (pattern_pfd); g_free (pattern_pfd_desc); @@ -1016,6 +1061,8 @@ gimp_font_factory_load_names (GimpFontFactory *factory, g_free (newname); g_string_free (xml, TRUE); g_string_free (xml_bold_variant, TRUE); + g_string_free (xml_italic_variant, TRUE); + g_string_free (xml_bold_italic_variant, TRUE); } g_string_append (global_xml, "");