* src/sfnt/ttload.c (tt_face_load_metrics): Ignore excess number of metrics instead of aborting. Patch suggested by Derek Noonburg. * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Scale the glyph properly if no hinter is available. * docs/CHANGES: Mention scaling bug.
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
diff --git a/ChangeLog b/ChangeLog
index 0269a92..1b18a00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,12 @@
* src/sfnt/ttload.c (tt_face_load_metrics): Ignore excess number
of metrics instead of aborting. Patch suggested by Derek Noonburg.
+ * src/cff/cffgload.c (cff_slot_load), src/cid/cidgload.c
+ (cid_slot_load_glyph), src/type1/t1gload.c (T1_Load_Glyph): Scale
+ the glyph properly if no hinter is available.
+
+ * docs/CHANGES: Mention scaling bug.
+
2005-11-18 susuzki toshiya <mpsuzuki@hiroshima-u.ac.jp>
* include/freetype/ftgxval.h, src/base/ftgxval.c
diff --git a/docs/CHANGES b/docs/CHANGES
index 6295ec2..3e4b772 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -9,6 +9,9 @@ LATEST CHANGES BETWEEN 2.2.0 and 2.1.10
- CFF OpenType fonts didn't return correct vertical metrics for
glyphs with outlines.
+ - If FreeType was compiled without hinters, all font formats based
+ on PS outlines weren't scaled correctly.
+
II. IMPORTANT CHANGES
- A new API `FT_TrueTypeGX_Validate' (in FT_GX_VALIDATE_H) has
diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c
index d4ea07b..7ac2fcd 100644
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -2667,7 +2667,7 @@
/* First of all, scale the points */
- if ( !hinting )
+ if ( !hinting || !decoder.builder.hints_funcs )
for ( n = cur->n_points; n > 0; n--, vec++ )
{
vec->x = FT_MulFix( vec->x, x_scale );
diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c
index 20cc35c..d61d959 100644
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -252,22 +252,6 @@
#endif /* 0 */
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /********** *********/
- /********** *********/
- /********** UNHINTED GLYPH LOADER *********/
- /********** *********/
- /********** The following code is in charge of loading a *********/
- /********** single outline. It completely ignores hinting *********/
- /********** and is used when FT_LOAD_NO_HINTING is set. *********/
- /********** *********/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
-
FT_LOCAL_DEF( FT_Error )
cid_slot_load_glyph( FT_GlyphSlot cidglyph, /* CID_GlyphSlot */
FT_Size cidsize, /* CID_Size */
@@ -394,7 +378,7 @@
/* First of all, scale the points */
- if ( !hinting )
+ if ( !hinting || !decoder.builder.hints_funcs )
for ( n = cur->n_points; n > 0; n--, vec++ )
{
vec->x = FT_MulFix( vec->x, x_scale );
diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c
index b1869f5..54c9b68 100644
--- a/src/type1/t1gload.c
+++ b/src/type1/t1gload.c
@@ -195,23 +195,6 @@
}
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
- /********** *********/
- /********** UNHINTED GLYPH LOADER *********/
- /********** *********/
- /********** The following code is in charge of loading a *********/
- /********** single outline. It completely ignores hinting *********/
- /********** and is used when FT_LOAD_NO_HINTING is set. *********/
- /********** *********/
- /********** The Type 1 hinter is located in `t1hint.c' *********/
- /********** *********/
- /*************************************************************************/
- /*************************************************************************/
- /*************************************************************************/
-
-
FT_LOCAL_DEF( FT_Error )
T1_Load_Glyph( T1_GlyphSlot glyph,
T1_Size size,
@@ -352,7 +335,7 @@
/* First of all, scale the points, if we are not hinting */
- if ( !hinting )
+ if ( !hinting || ! decoder.builder.hints_funcs )
for ( n = cur->n_points; n > 0; n--, vec++ )
{
vec->x = FT_MulFix( vec->x, x_scale );