+static void wxGtkTextApplyTagsFromAttr(GtkTextBuffer *text_buffer,
+                                       const wxTextAttr& attr,
+                                       GtkTextIter *start,
+                                       GtkTextIter *end)
+{
+    static gchar buf[1024];
+    GtkTextTag *tag;
+
+    if (attr.HasFont())
+    {
+        char *font_string;
+        PangoFontDescription *font_description = attr.GetFont().GetNativeFontInfo()->description;
+        font_string = pango_font_description_to_string(font_description);
+        g_snprintf(buf, sizeof(buf), "WXFONT %s", font_string);
+        tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
+                                         buf );
+        if (!tag)
+            tag = gtk_text_buffer_create_tag( text_buffer, buf,
+                                              "font-desc", font_description,
+                                              NULL );
+        gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
+        g_free (font_string);
+    }
+
+    if (attr.HasTextColour())
+    {
+        GdkColor *colFg = attr.GetTextColour().GetColor();
+        g_snprintf(buf, sizeof(buf), "WXFORECOLOR %d %d %d",
+                   colFg->red, colFg->green, colFg->blue);
+        tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
+                                         buf );
+        if (!tag)
+            tag = gtk_text_buffer_create_tag( text_buffer, buf,
+                                              "foreground-gdk", colFg, NULL );
+        gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
+    }
+
+    if (attr.HasBackgroundColour())
+    {
+        GdkColor *colBg = attr.GetBackgroundColour().GetColor();
+        g_snprintf(buf, sizeof(buf), "WXBACKCOLOR %d %d %d",
+                   colBg->red, colBg->green, colBg->blue);
+        tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
+                                         buf );
+        if (!tag)
+            tag = gtk_text_buffer_create_tag( text_buffer, buf,
+                                              "background-gdk", colBg, NULL );
+        gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
+    }
+}
+