shithub: freetype+ttf2subf

Download patch

ref: f891f91113f1aef8be3e0276231c134c53257554
parent: 3681e37db911f419ed93fb382c5b4506e27a74af
author: Werner Lemberg <[email protected]>
date: Sat Dec 22 20:38:53 EST 2001

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

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-22  Francesco Zappa Nardelli  <[email protected]>
+
+	* src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE'
+	and fix incorrect computation of `available_sizes'.
+
 2001-12-22  David Turner  <[email protected]>
 
 	* src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an
--- a/src/pcf/pcfread.c
+++ b/src/pcf/pcfread.c
@@ -920,6 +920,7 @@
     {
       FT_Face       root = FT_FACE( face );
       PCF_Property  prop;
+      int           size_set = 0;
 
 
       root->num_faces = 1;
@@ -981,25 +982,42 @@
       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;
       }