Commit f891f91113f1aef8be3e0276231c134c53257554

Werner Lemberg 2001-12-23T01:38:53

* src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' and fix incorrect computation of `available_sizes'.

diff --git a/ChangeLog b/ChangeLog
index 65b4be0..5cb9741 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-22  Francesco Zappa Nardelli  <Francesco.Zappa.Nardelli@ens.fr>
+
+	* src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE'
+	and fix incorrect computation of `available_sizes'.
+
 2001-12-22  David Turner  <david@freetype.org>
 
 	* src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an
diff --git a/src/pcf/pcfread.c b/src/pcf/pcfread.c
index 984df71..d769126 100644
--- a/src/pcf/pcfread.c
+++ b/src/pcf/pcfread.c
@@ -920,6 +920,7 @@ THE SOFTWARE.
     {
       FT_Face       root = FT_FACE( face );
       PCF_Property  prop;
+      int           size_set = 0;
 
 
       root->num_faces = 1;
@@ -981,25 +982,42 @@ THE SOFTWARE.
       prop = find_property( face, "PIXEL_SIZE" );
       if ( prop != NULL )
       {
-        PCF_Property  xres = 0, yres = 0;
+        root->available_sizes->width  = (FT_Short)( prop->value.integer );
+        root->available_sizes->height = (FT_Short)( prop->value.integer );
+        
+        size_set = 1;
+      }
+      else 
+      {
+        prop = find_property( face, "POINT_SIZE" );
+        if ( prop != NULL )
+        {
+          PCF_Property  xres = 0, yres = 0;
 
 
-        xres = find_property( face, "RESOLUTION_X" );
-        yres = find_property( face, "RESOLUTION_Y" );
-        if ( ( xres != NULL ) && ( yres != NULL ) )
-        {
-          root->available_sizes->width =
-            (FT_Short)( prop->value.integer * 75 / xres->value.integer );
-          root->available_sizes->height =
-            (FT_Short)( prop->value.integer * 75 / yres->value.integer );
+          xres = find_property( face, "RESOLUTION_X" );
+          yres = find_property( face, "RESOLUTION_Y" );
+              
+          if ( ( xres != NULL ) && ( yres != NULL ) )
+          {
+            root->available_sizes->width =
+              (FT_Short)( prop->value.integer *  
+                          xres->value.integer / 720 );
+            root->available_sizes->height =
+              (FT_Short)( prop->value.integer *  
+                          yres->value.integer / 720 ); 
+                  
+            size_set = 1;
+          }
         }
       }
-      else
-      { /* XXX */
+
+      if (size_set == 0 )
+      {
 #if 0
         printf( "PCF Warning: Pixel Size undefined, assuming 12\n");
 #endif
-        root->available_sizes->width = 12;
+        root->available_sizes->width  = 12;
         root->available_sizes->height = 12;
       }