shithub: freetype+ttf2subf

Download patch

ref: b94f3d3ea2577bb8fdd4039b42ee916df16a354e
parent: 7f74a52a210fc20a8fcc0f8160ce92dfe0f84c48
author: Werner Lemberg <[email protected]>
date: Fri Jul 26 10:52:29 EDT 2002

* src/pshinter/pshalgo3.c (psh3_hint_table_record,
psh3_hint_table_init, psh3_hint_table_activate_mask): Fix error
message.

Formatting.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,10 @@
 	without effect.
 	* src/truetype/ttdriver (Get_Char_Index, Get_Next_Char): Removed.
 
+	* src/pshinter/pshalgo3.c (psh3_hint_table_record,
+	psh3_hint_table_init, psh3_hint_table_activate_mask): Fix error
+	message.
+
 2002-07-24  Graham Asher  <[email protected]>
 
 	* src/truetype/ttobjs.c: Fix for bug reported by Sven Neumann
--- a/src/cff/cffcmap.c
+++ b/src/cff/cffcmap.c
@@ -1,10 +1,29 @@
+/***************************************************************************/
+/*                                                                         */
+/*  cffcmap.c                                                              */
+/*                                                                         */
+/*    CFF character mapping table (cmap) support (body).                   */
+/*                                                                         */
+/*  Copyright 2002 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
 #include "cffcmap.h"
 #include "cffload.h"
 
+
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
-  /*****           CFF  STANDARD (AND EXPERT) ENCODING CMAPS           *****/
+  /*****           CFF STANDARD (AND EXPERT) ENCODING CMAPS            *****/
   /*****                                                               *****/
   /*************************************************************************/
   /*************************************************************************/
@@ -38,8 +57,9 @@
   {
     FT_UInt  result = 0;
 
+
     if ( char_code < cmap->count )
-      result = cmap->gids[ char_code ];
+      result = cmap->gids[char_code];
     
     return result;
   }
@@ -47,23 +67,25 @@
 
   FT_CALLBACK_DEF( FT_UInt )
   cff_cmap_encoding_char_next( CFF_CMapStd   cmap,
-                               FT_UInt32   *pchar_code )
+                               FT_UInt32    *pchar_code )
   {
     FT_UInt    result    = 0;
     FT_UInt32  char_code = *pchar_code;
     
+
     *pchar_code = 0;
 
     if ( char_code < cmap->count )
     {
-      FT_UInt  code = (FT_UInt)(char_code+1);
+      FT_UInt  code = (FT_UInt)(char_code + 1);
       
+
       for (;;)
       {
         if ( code >= cmap->count )
           break;
           
-        result = cmap->gids[ code ];
+        result = cmap->gids[code];
         if ( result != 0 )
         {
           *pchar_code = code;
@@ -77,7 +99,6 @@
   }
 
 
-
   FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec
   cff_cmap_encoding_class_rec =
   {
@@ -198,9 +219,10 @@
   FT_CALLBACK_DEF( void )
   cff_cmap_unicode_done( CFF_CMapUnicode  cmap )
   {
-    FT_Face    face   = FT_CMAP_FACE(cmap);
-    FT_Memory  memory = FT_FACE_MEMORY(face);
+    FT_Face    face   = FT_CMAP_FACE( cmap );
+    FT_Memory  memory = FT_FACE_MEMORY( face );
 
+ 
     FT_FREE( cmap->pairs );
     cmap->num_pairs = 0;
   }
@@ -208,11 +230,11 @@
 
   FT_CALLBACK_DEF( FT_UInt )
   cff_cmap_unicode_char_index( CFF_CMapUnicode  cmap,
-                              FT_UInt32       char_code )
+                               FT_UInt32        char_code )
   {
-    FT_UInt         min = 0;
-    FT_UInt         max = cmap->num_pairs;
-    FT_UInt         mid;
+    FT_UInt          min = 0;
+    FT_UInt          max = cmap->num_pairs;
+    FT_UInt          mid;
     CFF_CMapUniPair  pair;
 
 
@@ -235,7 +257,7 @@
 
   FT_CALLBACK_DEF( FT_UInt )
   cff_cmap_unicode_char_next( CFF_CMapUnicode  cmap,
-                             FT_UInt32      *pchar_code )
+                              FT_UInt32       *pchar_code )
   {
     FT_UInt    result    = 0;
     FT_UInt32  char_code = *pchar_code + 1;
@@ -243,9 +265,9 @@
 
   Restart:
     {
-      FT_UInt         min = 0;
-      FT_UInt         max = cmap->num_pairs;
-      FT_UInt         mid;
+      FT_UInt          min = 0;
+      FT_UInt          max = cmap->num_pairs;
+      FT_UInt          mid;
       CFF_CMapUniPair  pair;
 
 
@@ -299,3 +321,5 @@
     (FT_CMap_CharNextFunc) cff_cmap_unicode_char_next
   };
 
+
+/* END */
--- a/src/cff/cffcmap.h
+++ b/src/cff/cffcmap.h
@@ -1,10 +1,29 @@
-#ifndef __CFF_CMAP_H__
-#define __CFF_CMAP_H__
+/***************************************************************************/
+/*                                                                         */
+/*  cffcmap.h                                                              */
+/*                                                                         */
+/*    CFF character mapping table (cmap) support (specification).          */
+/*                                                                         */
+/*  Copyright 2002 by                                                      */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used,       */
+/*  modified, and distributed under the terms of the FreeType project      */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
 
+
+#ifndef __CFFCMAP_H__
+#define __CFFCMAP_H__
+
 #include "cffobjs.h"
 
 FT_BEGIN_HEADER
 
+
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -18,9 +37,9 @@
 
   typedef struct  CFF_CMapStdRec_
   {
-    FT_CMapRec    cmap;
-    FT_UInt       count;
-    FT_UShort*    gids;   /* up to 256 elements */
+    FT_CMapRec  cmap;
+    FT_UInt     count;
+    FT_UShort*  gids;   /* up to 256 elements */
     
   } CFF_CMapStdRec;
 
@@ -63,4 +82,7 @@
 
 FT_END_HEADER
 
-#endif /* __CFF_CMAP_H__ */
+#endif /* __CFFCMAP_H__ */
+
+
+/* END */
--- a/src/pshinter/pshalgo3.c
+++ b/src/pshinter/pshalgo3.c
@@ -21,9 +21,11 @@
 #include FT_INTERNAL_DEBUG_H
 #include "pshalgo3.h"
 
+
 #undef  FT_COMPONENT
 #define FT_COMPONENT  trace_pshalgo2
 
+
 #ifdef DEBUG_HINTER
   extern PSH3_Hint_Table  ps3_debug_hint_table = 0;
   extern PSH3_HintFunc    ps3_debug_hint_func  = 0;
@@ -31,12 +33,10 @@
 #endif
 
 
-
 #undef  SNAP_STEMS
 #undef  ONLY_ALIGN_Y
 
 
-
   /*************************************************************************/
   /*************************************************************************/
   /*****                                                               *****/
@@ -76,7 +76,7 @@
   static void
   psh3_hint_table_deactivate( PSH3_Hint_Table  table )
   {
-    FT_UInt   count = table->max_hints;
+    FT_UInt    count = table->max_hints;
     PSH3_Hint  hint  = table->hints;
 
 
@@ -98,7 +98,7 @@
 
     if ( idx >= table->max_hints )
     {
-      FT_ERROR(( "%s.activate: invalid hint index %d\n", idx ));
+      FT_ERROR(( "psh3_hint_table_record: invalid hint index %d\n", idx ));
       return;
     }
 
@@ -132,8 +132,7 @@
     if ( table->num_hints < table->max_hints )
       table->sort_global[table->num_hints++] = hint;
     else
-      FT_ERROR(( "%s.activate: too many sorted hints!  BUG!\n",
-                 "ps.fitter" ));
+      FT_ERROR(( "psh3_hint_table_record: too many sorted hints!  BUG!\n" ));
   }
 
 
@@ -221,10 +220,10 @@
     /* now, do a linear parse in case some hints were left alone */
     if ( table->num_hints != table->max_hints )
     {
-      FT_UInt   Index, Count;
+      FT_UInt  Index, Count;
 
 
-      FT_ERROR(( "%s.init: missing/incorrect hint masks!\n" ));
+      FT_ERROR(( "psh3_hint_table_init: missing/incorrect hint masks!\n" ));
       Count = table->max_hints;
       for ( Index = 0; Index < Count; Index++ )
         psh3_hint_table_record( table, Index );
@@ -270,12 +269,13 @@
           PSH3_Hint*  sort = table->sort;
           PSH3_Hint   hint2;
 
+
           for ( count2 = count; count2 > 0; count2--, sort++ )
           {
             hint2 = sort[0];
             if ( psh3_hint_overlap( hint, hint2 ) )
-              FT_ERROR(( "%s.activate_mask: found overlapping hints\n",
-                         "psf.hint" ));
+              FT_ERROR(( "psh3_hint_table_activate_mask:"
+                         " found overlapping hints\n" ))
           }
 #else
           count2 = 0;
@@ -287,8 +287,8 @@
             if ( count < table->max_hints )
               table->sort[count++] = hint;
             else
-              FT_ERROR(( "%s.activate_mask: too many active hints\n",
-                         "psf.hint" ));
+              FT_ERROR(( "psh3_hint_tableactivate_mask:"
+                         " too many active hints\n" ));
           }
         }
       }
@@ -334,6 +334,7 @@
   /*************************************************************************/
 
 #ifdef DEBUG_HINTER
+
   static void
   ps3_simple_scale( PSH3_Hint_Table  table,
                     FT_Fixed         scale,
@@ -355,23 +356,22 @@
         ps3_debug_hint_func( hint, dimension );
     }
   }
-#endif
 
+#endif /* DEBUG_HINTER */
+
+
   static FT_Fixed
-  psh3_hint_snap_stem_side_delta ( FT_Fixed pos,
-                                   FT_Fixed len )
+  psh3_hint_snap_stem_side_delta( FT_Fixed  pos,
+                                  FT_Fixed  len )
   {
-    FT_Fixed delta1 = ( ( pos + 32 ) & -64 ) - pos;
-    FT_Fixed delta2 = ( ( pos + len + 32 ) & -64  ) - pos - len;
+    FT_Fixed  delta1 = ( ( pos + 32 ) & -64 ) - pos;
+    FT_Fixed  delta2 = ( ( pos + len + 32 ) & -64  ) - pos - len;
 
+
     if ( ABS( delta1 ) <= ABS( delta2 ) )
-    {
       return delta1;
-    }
     else
-    {
       return delta2;
-    }
   }
 
 
@@ -386,7 +386,7 @@
     FT_Fixed       delta = dim->scale_delta;
 
 
-    if ( !psh3_hint_is_fitted(hint) )
+    if ( !psh3_hint_is_fitted( hint ) )
     {
       FT_Pos  pos = FT_MulFix( hint->org_pos, scale ) + delta;
       FT_Pos  len = FT_MulFix( hint->org_len, scale );
@@ -405,7 +405,7 @@
 
         psh3_hint_set_fitted( hint );
         return;
-          }
+      }
 
       /* perform stem snapping when requested */
       if ( ( hint_flags & FT_HINT_NO_INTEGER_STEM ) == 0 )
@@ -469,9 +469,9 @@
             if ( !psh3_hint_is_fitted( parent ) )
               psh3_hint_align( parent, globals, dimension, hint_flags );
 
-            par_org_center = parent->org_pos + ( parent->org_len / 2);
-            par_cur_center = parent->cur_pos + ( parent->cur_len / 2);
-            cur_org_center = hint->org_pos   + ( hint->org_len   / 2);
+            par_org_center = parent->org_pos + ( parent->org_len / 2 );
+            par_cur_center = parent->cur_pos + ( parent->cur_len / 2 );
+            cur_org_center = hint->org_pos   + ( hint->org_len   / 2 );
 
             cur_delta = FT_MulFix( cur_org_center - par_org_center, scale );
             pos       = par_cur_center + cur_delta - ( len >> 1 );
@@ -516,15 +516,15 @@
              * C)       |--------------------------------|
              *
              * Position A) (split the excess stem equally) should be better
-             * for stems of width N + f where f < 0.5
+             * for stems of width N + f where f < 0.5.
              *
              * Position B) (split the deficiency equally) should be better
-             * for stems of width N + f where f > 0.5
+             * for stems of width N + f where f > 0.5.
              *
              * It turns out though that minimizing the total number of touched
              * pixels is also important, so position C), with one edge
              * aligned with a pixel boundary is actually preferable
-             * to A). There are also more possible positions for C) than
+             * to A).  There are also more possible positions for C) than
              * for A) or B), so there will be less distortion of the overall
              * character shape.
              */
@@ -535,6 +535,7 @@
 
               FT_Fixed delta_a, delta_b;
 
+
               if ( ( len / 64 ) & 1 )
               {
                 delta_a = ( center & -64 ) + 32 - center;
@@ -551,13 +552,12 @@
                * C) always; for large amounts, B) always; inbetween,
                * pick whichever one involves less stem movement.
                */
-              if (frac_len < 32)
-              {
+              if ( frac_len < 32 )
                 pos += psh3_hint_snap_stem_side_delta ( pos, len );
-              }
-              else if (frac_len < 48)
+              else if ( frac_len < 48 )
               {
-                FT_Fixed side_delta = psh3_hint_snap_stem_side_delta ( pos, len );
+                FT_Fixed  side_delta =
+                            psh3_hint_snap_stem_side_delta( pos, len );
 
                 if ( ABS( side_delta ) < ABS( delta_b ) )
                   pos += side_delta;
@@ -565,9 +565,7 @@
                   pos += delta_b;
               }
               else
-              {
                 pos += delta_b;
-              }
             }
             hint->cur_pos = pos;
           }
@@ -594,6 +592,7 @@
     FT_UInt        count;
 
 #ifdef DEBUG_HINTER
+
     PSH_Dimension  dim   = &globals->dimension[dimension];
     FT_Fixed       scale = dim->scale_mult;
     FT_Fixed       delta = dim->scale_delta;
@@ -610,8 +609,9 @@
       ps3_simple_scale( table, scale, delta, dimension );
       return;
     }
-#endif
 
+#endif /* DEBUG_HINTER*/
+
     hint  = table->hints;
     count = table->max_hints;
 
@@ -628,8 +628,8 @@
   /*************************************************************************/
   /*************************************************************************/
 
-#define PSH3_ZONE_MIN  -3200000
-#define PSH3_ZONE_MAX  +3200000
+#define PSH3_ZONE_MIN  -3200000L
+#define PSH3_ZONE_MAX  +3200000L
 
 #define xxDEBUG_ZONES
 
@@ -642,8 +642,8 @@
   psh3_print_zone( PSH3_Zone  zone )
   {
     printf( "zone [scale,delta,min,max] = [%.3f,%.3f,%d,%d]\n",
-             zone->scale/65536.0,
-             zone->delta/64.0,
+             zone->scale / 65536.0,
+             zone->delta / 64.0,
              zone->min,
              zone->max );
   }
@@ -650,9 +650,9 @@
 
 #else
 
-#define psh3_print_zone( x )   do { } while ( 0 )
+#define psh3_print_zone( x )  do { } while ( 0 )
 
-#endif
+#endif /* DEBUG_ZONES */
 
 
   /*************************************************************************/
@@ -911,6 +911,7 @@
       point->org_x = vec->x;
       point->org_y = vec->y;
 #endif
+
     }
   }
 
@@ -937,6 +938,7 @@
         tags[n] |= (char)( ( dimension == 0 ) ? 32 : 64 );
 
 #ifdef DEBUG_HINTER
+
       if ( dimension == 0 )
       {
         point->cur_x   = point->cur_u;
@@ -947,7 +949,9 @@
         point->cur_y   = point->cur_u;
         point->flags_y = point->flags;
       }
+
 #endif
+
       point++;
     }
   }
@@ -991,6 +995,7 @@
       }
 
 #if 1
+
       if ( point->org_u >= hint->org_pos &&
            point->org_u <= hint->org_pos + hint->org_len &&
            psh3_point_is_extremum( point ) )
@@ -999,7 +1004,9 @@
         point->hint = hint;
         break;
       }
+
 #endif
+
     }
   }
 
@@ -1016,7 +1023,8 @@
       PS_Mask          mask      = table->hint_masks->masks;
       FT_UInt          num_masks = table->hint_masks->num_masks;
       FT_UInt          first     = 0;
-      FT_Int           major_dir = dimension == 0 ? PSH3_DIR_UP : PSH3_DIR_RIGHT;
+      FT_Int           major_dir = dimension == 0 ? PSH3_DIR_UP
+                                                  : PSH3_DIR_RIGHT;
 
 
       /* process secondary hints to "selected" points */
@@ -1081,8 +1089,8 @@
   psh3_glyph_interpolate_strong_points( PSH3_Glyph  glyph,
                                         FT_Int      dimension )
   {
-    PSH_Dimension    dim   = &glyph->globals->dimension[dimension];
-    FT_Fixed         scale = dim->scale_mult;
+    PSH_Dimension  dim   = &glyph->globals->dimension[dimension];
+    FT_Fixed       scale = dim->scale_mult;
 
 
     {
@@ -1126,11 +1134,13 @@
   psh3_glyph_interpolate_normal_points( PSH3_Glyph  glyph,
                                         FT_Int      dimension )
   {
+
 #if 1
-    PSH_Dimension    dim   = &glyph->globals->dimension[dimension];
-    FT_Fixed         scale = dim->scale_mult;
 
+    PSH_Dimension  dim   = &glyph->globals->dimension[dimension];
+    FT_Fixed       scale = dim->scale_mult;
 
+
     /* first technique: a point is strong if it is a local extrema */
     {
       FT_UInt     count = glyph->num_points;
@@ -1172,7 +1182,7 @@
           {
             if ( psh3_point_is_strong( cur ) )
             {
-              FT_Pos   diff = cur->org_u - u;;
+              FT_Pos  diff = cur->org_u - u;;
 
 
               if ( diff <= 0 )
@@ -1230,7 +1240,9 @@
         }
       }
     }
-#endif
+
+#endif /* 1 */
+
   }
 
 
@@ -1239,18 +1251,18 @@
   psh3_glyph_interpolate_other_points( PSH3_Glyph  glyph,
                                        FT_Int      dimension )
   {
-    PSH_Dimension dim          = &glyph->globals->dimension[dimension];
-    FT_Fixed      scale        = dim->scale_mult;
-    FT_Fixed      delta        = dim->scale_delta;
-    PSH3_Contour  contour      = glyph->contours;
-    FT_UInt       num_contours = glyph->num_contours;
+    PSH_Dimension  dim          = &glyph->globals->dimension[dimension];
+    FT_Fixed       scale        = dim->scale_mult;
+    FT_Fixed       delta        = dim->scale_delta;
+    PSH3_Contour   contour      = glyph->contours;
+    FT_UInt        num_contours = glyph->num_contours;
 
 
     for ( ; num_contours > 0; num_contours--, contour++ )
     {
-      PSH3_Point   start = contour->start;
-      PSH3_Point   first, next, point;
-      FT_UInt      fit_count;
+      PSH3_Point  start = contour->start;
+      PSH3_Point  first, next, point;
+      FT_UInt     fit_count;
 
 
       /* count the number of strong points in this contour */
@@ -1399,6 +1411,7 @@
 
 
 #ifdef DEBUG_HINTER
+
     memory = globals->memory;
 
     if ( ps3_debug_glyph )
@@ -1411,8 +1424,9 @@
       return error;
 
     ps3_debug_glyph = glyph;
-#endif
 
+#endif /* DEBUG_HINTER */
+
     error = psh3_glyph_init( glyph, outline, ps_hints, globals );
     if ( error )
       goto Exit;
@@ -1439,9 +1453,11 @@
     }
 
   Exit:
+
 #ifndef DEBUG_HINTER
     psh3_glyph_done( glyph );
 #endif
+
     return error;
   }
 
--- a/src/pshinter/pshalgo3.h
+++ b/src/pshinter/pshalgo3.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    PostScript hinting algorithm 3 (specification).                      */
 /*                                                                         */
-/*  Copyright 2001 by                                                      */
+/*  Copyright 2001, 2002 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */