From 594ffc2fe1c2e09da1bfaed67dacb0206fd28a87 Mon Sep 17 00:00:00 2001 From: "vladimir@pobox.com" Date: Wed, 1 Aug 2007 23:59:30 -0700 Subject: [PATCH] b=383960, moz cairo: max-font-size.patch --- gfx/cairo/cairo/src/cairo-ft-font.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/gfx/cairo/cairo/src/cairo-ft-font.c b/gfx/cairo/cairo/src/cairo-ft-font.c index 4dc61eea5b9..8fb413743d1 100644 --- a/gfx/cairo/cairo/src/cairo-ft-font.c +++ b/gfx/cairo/cairo/src/cairo-ft-font.c @@ -64,6 +64,10 @@ */ #define MAX_OPEN_FACES 10 +/* This is the maximum font size we allow to be passed to FT_Set_Char_Size + */ +#define MAX_FONT_SIZE 1000 + /* * The simple 2x2 matrix is converted into separate scale and shape * factors so that hinting works right @@ -656,9 +660,18 @@ _cairo_ft_unscaled_font_set_scale (cairo_ft_unscaled_font_t *unscaled, FT_Set_Transform(unscaled->face, &mat, NULL); if ((unscaled->face->face_flags & FT_FACE_FLAG_SCALABLE) != 0) { + double x_scale = sf.x_scale; + double y_scale = sf.y_scale; + if (x_scale > MAX_FONT_SIZE) { + x_scale = MAX_FONT_SIZE; + } + if (y_scale > MAX_FONT_SIZE) { + y_scale = MAX_FONT_SIZE; + } + error = FT_Set_Char_Size (unscaled->face, - sf.x_scale * 64.0, - sf.y_scale * 64.0, + x_scale * 64.0, + y_scale * 64.0, 0, 0); if (error) { _cairo_error (CAIRO_STATUS_NO_MEMORY);