Commit d233482ef5b2988b31eeff2cc11eb7825f972915

Werner Lemberg 2004-02-13T23:48:39

* src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if ppem values don't change. Suggested by Graham Asher.

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