michael@0: diff --git a/gfx/cairo/cairo/src/cairo-gstate.c b/gfx/cairo/cairo/src/cairo-gstate.c michael@0: index 0439bcf..32a5c4b 100644 michael@0: --- a/gfx/cairo/cairo/src/cairo-gstate.c michael@0: +++ b/gfx/cairo/cairo/src/cairo-gstate.c michael@0: @@ -1271,8 +1271,13 @@ _cairo_gstate_set_font_matrix (cairo_gstate_t *gstate, michael@0: if (memcmp (matrix, &gstate->font_matrix, sizeof (cairo_matrix_t)) == 0) michael@0: return CAIRO_STATUS_SUCCESS; michael@0: michael@0: - if (! _cairo_matrix_is_invertible (matrix)) michael@0: - return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); michael@0: + if (! _cairo_matrix_is_invertible (matrix)) { michael@0: + /* rank 0 matrices are ok even though they are not invertible */ michael@0: + if (!(matrix->xx == 0. && matrix->xy == 0. && michael@0: + matrix->yx == 0. && matrix->yy == 0.)) { michael@0: + return _cairo_error (CAIRO_STATUS_INVALID_MATRIX); michael@0: + } michael@0: + } michael@0: michael@0: _cairo_gstate_unset_scaled_font (gstate); michael@0: