poppler/CairoFontEngine.cc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)
New commits: commit f1e621adbbb74ec709022b2a31195331651c83fa Author: Adrian Johnson <[email protected]> Date: Sun Apr 8 19:42:05 2012 +0930 cairo: use correct userfont font bbox cairo 1.12 started clipping text to the font bbox Bug 48399 diff --git a/poppler/CairoFontEngine.cc b/poppler/CairoFontEngine.cc index 7d15024..5f35d2f 100644 --- a/poppler/CairoFontEngine.cc +++ b/poppler/CairoFontEngine.cc @@ -570,6 +570,29 @@ _free_type3_font_info(void *closure) } static cairo_status_t +_init_type3_glyph (cairo_scaled_font_t *scaled_font, + cairo_t *cr, + cairo_font_extents_t *extents) +{ + type3_font_info_t *info; + GfxFont *font; + double *mat; + + info = (type3_font_info_t *) + cairo_font_face_get_user_data (cairo_scaled_font_get_font_face (scaled_font), + &type3_font_key); + font = info->font; + mat = font->getFontBBox(); + extents->ascent = mat[3]; /* y2 */ + extents->descent = -mat[3]; /* -y1 */ + extents->height = extents->ascent + extents->descent; + extents->max_x_advance = mat[2] - mat[1]; /* x2 - x1 */ + extents->max_y_advance = 0; + + return CAIRO_STATUS_SUCCESS; +} + +static cairo_status_t _render_type3_glyph (cairo_scaled_font_t *scaled_font, unsigned long glyph, cairo_t *cr, @@ -667,6 +690,7 @@ CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, PDFDoc *doc, info = (type3_font_info_t *) malloc(sizeof(*info)); ref = *gfxFont->getID(); font_face = cairo_user_font_face_create(); + cairo_user_font_face_set_init_func (font_face, _init_type3_glyph); cairo_user_font_face_set_render_glyph_func (font_face, _render_type3_glyph); gfxFont->incRefCnt(); info->font = gfxFont; _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
