Commit a5724ef81355e8ecfade104940789c2458c89b33

Werner Lemberg 2004-02-21T16:47:20

* src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call ps_mask_table_alloc but ps_mask_table_last. (ps_hints_t2mask): Use correct position and number for vertical and horizontal hinter mask bits. * docs/CHANGES: Updated.

diff --git a/ChangeLog b/ChangeLog
index 3b43acd..d969cbc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2004-02-20  Werner Lemberg  <wl@gnu.org>
+
+	* src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call
+	ps_mask_table_alloc but ps_mask_table_last.
+	(ps_hints_t2mask): Use correct position and number for vertical
+	and horizontal hinter mask bits.
+
+	* docs/CHANGES: Updated.
+
 2004-02-19  Werner Lemberg  <wl@gnu.org>
 
 	* src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling.
diff --git a/docs/CHANGES b/docs/CHANGES
index 3369d7e..86a227e 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -32,6 +32,9 @@ LATEST CHANGES BETWEEN 2.1.8 and 2.1.7
 
     - The flex operator didn't work for CFF fonts.
 
+    - PS glyphs which use the `hintmask' operator haven't been rendered
+      correctly in some cases.
+
     - Metrics for BDF and PCF bitmap font formats have been fixed.
 
     - The   `freetype-config'   script   now  handles   --prefix   and
diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c
index 13e0795..648de18 100644
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    FreeType PostScript hints recorder (body).                           */
 /*                                                                         */
-/*  Copyright 2001, 2002, 2003 by                                          */
+/*  Copyright 2001, 2002, 2003, 2004 by                                    */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -318,8 +318,7 @@
     PS_Mask   mask;
 
 
-    /* allocate new mask, and grow it to "bit_count" bits */
-    error = ps_mask_table_alloc( table, memory, &mask );
+    error = ps_mask_table_last( table, memory, &mask );
     if ( error )
       goto Exit;
 
@@ -1018,12 +1017,12 @@
       }
 
       /* set-up new horizontal and vertical hint mask now */
-      error = ps_dimension_set_mask_bits( &dim[0], bytes, 0, count1,
+      error = ps_dimension_set_mask_bits( &dim[0], bytes, count2, count1,
                                           end_point, memory );
       if ( error )
         goto Fail;
 
-      error = ps_dimension_set_mask_bits( &dim[1], bytes, count1, count2,
+      error = ps_dimension_set_mask_bits( &dim[1], bytes, 0, count2,
                                           end_point, memory );
       if ( error )
         goto Fail;