+ set_color (text_renderer, part);
+
+ cr = text_renderer->cr;
+
+ cairo_get_matrix (cr, &matrix);
+ matrix.xx = matrix.yy = 1.0;
+ matrix.xy = matrix.yx = 0.0;
+ cairo_set_matrix (cr, &matrix);
+
+ cairo_move_to (cr, x11, y1_);
+ cairo_line_to (cr, x21, y1_);
+ cairo_line_to (cr, x22, y2);
+ cairo_line_to (cr, x12, y2);
+ cairo_close_path (cr);
+
+ cairo_fill (cr);
+
+ unset_color (text_renderer);
+}
+
+static void
+gtk_text_renderer_draw_error_underline (PangoRenderer *renderer,
+ int x,
+ int y,
+ int width,
+ int height)
+{
+ GtkTextRenderer *text_renderer = GTK_TEXT_RENDERER (renderer);
+
+ set_color (text_renderer, PANGO_RENDER_PART_UNDERLINE);
+
+ pango_cairo_show_error_underline (text_renderer->cr,
+ (double)x / PANGO_SCALE, (double)y / PANGO_SCALE,
+ (double)width / PANGO_SCALE, (double)height / PANGO_SCALE);
+
+ unset_color (text_renderer);
+}
+
+static void
+gtk_text_renderer_draw_shape (PangoRenderer *renderer,
+ PangoAttrShape *attr,
+ int x,
+ int y)
+{
+ GtkTextRenderer *text_renderer = GTK_TEXT_RENDERER (renderer);
+
+ if (attr->data == NULL)