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'.
--- 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;
}