summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrea Canciani <ranma42@gmail.com>2011-02-05 09:48:36 +0100
committerAndrea Canciani <ranma42@gmail.com>2011-03-18 17:36:45 +0100
commit7a09afbe9d1bdaa1ef1619c5d35b79a9a45bf4ea (patch)
treed785d590a3ebaf0e6a919f64e62fd00fdf87577d
parent4e689731975c73124025f91841260fe1ce4c332a (diff)
gstate: Degenerate font drawing is a noopwip/0matrix
Instead of passing a size 0 (or degenerate in any other way) font to the backend, handle the operation in gstate.
-rw-r--r--src/cairo-gstate.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c
index eaf7a56aa..6cab358da 100644
--- a/src/cairo-gstate.c
+++ b/src/cairo-gstate.c
@@ -1911,6 +1911,18 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate,
if (unlikely (status))
return status;
+ if (_cairo_matrix_compute_determinant (&gstate->scaled_font->scale) == 0) {
+ if (_cairo_operator_bounded_by_mask (gstate->op))
+ return CAIRO_STATUS_SUCCESS;
+
+ pattern = &_cairo_pattern_clear.base;
+ status = _cairo_surface_paint (gstate->target,
+ CAIRO_OPERATOR_CLEAR, pattern,
+ _gstate_get_clip (gstate, &clip));
+ _cairo_clip_fini (&clip);
+ return status;
+ }
+
transformed_glyphs = stack_transformed_glyphs;
transformed_clusters = stack_transformed_clusters;