Index: ChangeLog =================================================================== RCS file: /cvs/cairo/cairo/ChangeLog,v retrieving revision 1.918 diff -u -p -r1.918 ChangeLog --- ChangeLog 19 Aug 2005 19:55:00 -0000 1.918 +++ ChangeLog 19 Aug 2005 19:58:05 -0000 @@ -1,3 +1,9 @@ +2005-08-19 Owen Taylor + + * src/cairo-pdf-surface.c (_cairo_pdf_surface_show_glyphs): + Ignore really small fonts, since size zero fonts give xpdf + fits. (#2938) + 2005-08-18 Owen Taylor * src/cairo-xlib-surface.c (_cairo_xlib_surface_composite): We need Index: src/cairo-pdf-surface.c =================================================================== RCS file: /cvs/cairo/cairo/src/cairo-pdf-surface.c,v retrieving revision 1.57 diff -u -p -r1.57 cairo-pdf-surface.c --- src/cairo-pdf-surface.c 19 Aug 2005 17:36:44 -0000 1.57 +++ src/cairo-pdf-surface.c 19 Aug 2005 19:58:05 -0000 @@ -1306,6 +1306,7 @@ _cairo_pdf_surface_show_glyphs (cairo_sc cairo_output_stream_t *output = document->output_stream; cairo_font_subset_t *pdf_font; int i, index; + double det; /* XXX: Need to fix this to work with a general cairo_scaled_font_t. */ if (! _cairo_scaled_font_is_ft (scaled_font)) @@ -1315,6 +1316,13 @@ _cairo_pdf_surface_show_glyphs (cairo_sc if (pdf_font == NULL) return CAIRO_STATUS_NO_MEMORY; + /* Some PDF viewers (at least older versions of xpdf) have trouble with + * size 0 fonts. If the font size is less than 1/1000pt, ignore the + * font */ + _cairo_matrix_compute_determinant (&scaled_font->scale, &det); + if (fabs (det) < 0.000001) + return CAIRO_STATUS_SUCCESS; + emit_pattern (surface, pattern); _cairo_output_stream_printf (output,