* src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if ppem values don't change. Suggested by Graham Asher.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
diff --git a/ChangeLog b/ChangeLog
index b1b0fdd..202cc6d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-02-12 Werner Lemberg <wl@gnu.org>
+
+ * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if
+ ppem values don't change. Suggested by Graham Asher.
+
2004-02-11 Werner Lemberg <wl@gnu.org>
* src/cid/cidload.c (cid_face_open): Always allocate
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index b48288c..5e7b280 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -2042,8 +2042,17 @@
dim_x = ( char_width * horz_resolution + 36 ) / 72;
dim_y = ( char_height * vert_resolution + 36 ) / 72;
- metrics->x_ppem = (FT_UShort)( ( dim_x + 32 ) >> 6 );
- metrics->y_ppem = (FT_UShort)( ( dim_y + 32 ) >> 6 );
+ {
+ FT_UShort x_ppem = (FT_UShort)( ( dim_x + 32 ) >> 6 );
+ FT_UShort y_ppem = (FT_UShort)( ( dim_y + 32 ) >> 6 );
+
+
+ if ( x_ppem == metrics->x_ppem && y_ppem == metrics->y_ppem )
+ return
+
+ metrics->x_ppem = x_ppem;
+ metrics->y_ppem = y_ppem;
+ }
metrics->x_scale = 0x10000L;
metrics->y_scale = 0x10000L;
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index 98f68ee..941ef99 100644
Binary files a/src/cache/ftcsbits.c and b/src/cache/ftcsbits.c differ