shithub: freetype+ttf2subf

Download patch

ref: 44e47d5fd61e2d7846ef419231e793f8ce8d6011
parent: b5d88e8e0c674acc251ddb617771612b361bbb7f
author: Werner Lemberg <[email protected]>
date: Wed Nov 30 13:47:49 EST 2005

* src/sfnt/ttcmap.c, src/sfnt/ttcmap.h:
s/TT_CMAP_FLAG_OVERLAPPED/TT_CMAP_FLAG_OVERLAPPING/.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
 	* docs/CHANGES: Document ftdump's `-v' option.
 	Document latest charmap code changes.
 
+	* src/sfnt/ttcmap.c, src/sfnt/ttcmap.h:
+	s/TT_CMAP_FLAG_OVERLAPPED/TT_CMAP_FLAG_OVERLAPPING/.
+
 2005-11-30  Chia-I Wu  <[email protected]>
 
 	* src/sfnt/ttcmap.c (tt_cmap4_char_map_binary,
@@ -10,28 +13,27 @@
 
 2005-11-29  Chia-I Wu  <[email protected]>
 
-	Major update to distinguish between unsorted and overlapped segments
-	for cmap format 4.  For overlapped but sorted segments, which is
-	previously considered unsorted, we still use binary search.
+	Major update to distinguish between unsorted and overlapping
+	segments for cmap format 4.  For overlapping but sorted segments,
+	which is previously considered unsorted, we still use binary search.
 
-	* src/sfnt/ttcmap.h (struct  TT_CMapRec_): Replace `unsorted' by
-	`flags'.
+	* src/sfnt/ttcmap.h (TT_CMapRec_): Replace `unsorted' by `flags'. 
 	(TT_CMAP_FLAG_UNSORTED, TT_CMAP_FLAG_OVERLAPPED): New macros.
 
 	* src/sfnt/ttcmap.c (OPT_CMAP4): Removed as it is always defined.
-	(struct TT_CMap4Rec_): Remove `old_charcode' and `table_length'.  
+	(TT_CMap4Rec_): Remove `old_charcode' and `table_length'.  
 	(tt_cmap4_reset): Removed.
 	(tt_cmap4_init): Updated accordingly.
 	(tt_cmap4_next): Updated accordingly.
-	Take care of overlapped segments.
+	Take care of overlapping segments.
 	(tt_cmap4_validate): Make sure the subtable is large enough.
 	Do not check glyph_ids because some fonts set the length wrongly.
-	Also, when all segments have offset 0, glyph_ids is always invalid. It
-	does not cause any problem so far only because the check misses
+	Also, when all segments have offset 0, glyph_ids is always invalid.
+	It does not cause any problem so far only because the check misses
 	equality.
-	Distinguish between unsorted and overlapped segments.
-	(tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions to
-	do "charcode => glyph index" by linear/binary search.
+	Distinguish between unsorted and overlapping segments.
+	(tt_cmap4_char_map_linear, tt_cmap4_char_map_binary): New functions
+	to do `charcode => glyph index' by linear/binary search.
 	(tt_cmap4_char_index, tt_cmap4_char_next): Use
 	tt_cmap4_char_map_linear and tt_cmap4_char_map_binary.
 	(tt_face_build_cmaps): Treat the return value of validator as flags
@@ -39,10 +41,10 @@
 
 2005-11-29  Chia-I Wu  <[email protected]>
 
-	* src/sfnt/ttcmap.c (struct  TT_CMap12Rec_, tt_cmap12_init,
-	tt_cmap12_next): New struct/function for fast "next char".
-	(tt_cmap12_char_map_binary): New function to do "charcode => glyph
-	index" by binary search.
+	* src/sfnt/ttcmap.c (TT_CMap12Rec_, tt_cmap12_init, tt_cmap12_next):
+	New structures and functions for fast `next char'.
+	(tt_cmap12_char_map_binary): New function to do `charcode => glyph
+	index' by binary search.
 	(tt_cmap12_char_index, tt_cmap12_char_next): Use
 	tt_cmap12_char_map_binary.
 	(tt_face_build_cmaps): Check table and offset correctly (equality is
--- a/src/sfnt/ttcmap.c
+++ b/src/sfnt/ttcmap.c
@@ -700,10 +700,10 @@
   }
 
 
-  /* find the index of the charcode next to cmap->cur_charcode; */
-  /* caller should call tt_cmap4_set_range with proper range    */
-  /* before calling this function                               */
-  /*                                                            */
+  /* search the index of the charcode next to cmap->cur_charcode; */
+  /* caller should call tt_cmap4_set_range with proper range      */
+  /* before calling this function                                 */
+  /*                                                              */
   static void
   tt_cmap4_next( TT_CMap4  cmap )
   {
@@ -894,7 +894,7 @@
             if ( last_start > start || last_end > end )
               error |= TT_CMAP_FLAG_UNSORTED;
             else
-              error |= TT_CMAP_FLAG_OVERLAPPED;
+              error |= TT_CMAP_FLAG_OVERLAPPING;
           }
         }
 
@@ -947,7 +947,7 @@
         }
 
         last_start = start;
-        last_end = end;
+        last_end   = end;
       }
     }
 
@@ -964,7 +964,7 @@
     FT_Int     delta;
     FT_UInt    i, num_segs;
     FT_UInt32  charcode = *pcharcode;
-    FT_UInt    gindex    = 0;
+    FT_UInt    gindex   = 0;
     FT_Byte*   p;
 
 
@@ -1029,15 +1029,15 @@
 
 
   static FT_UInt
-  tt_cmap4_char_map_binary( TT_CMap     cmap,
-                            FT_UInt*    pcharcode,
-                            FT_Bool     next )
+  tt_cmap4_char_map_binary( TT_CMap   cmap,
+                            FT_UInt*  pcharcode,
+                            FT_Bool   next )
   {
     FT_UInt   num_segs2, start, end, offset;
     FT_Int    delta;
     FT_UInt   max, min, mid, num_segs;
     FT_UInt   charcode = *pcharcode;
-    FT_UInt   gindex    = 0;
+    FT_UInt   gindex   = 0;
     FT_Byte*  p;
     
 
@@ -1074,13 +1074,13 @@
         min = mid + 1;
       else
       {
-        p      += num_segs2;
-        delta   = TT_PEEK_SHORT( p );
-        p      += num_segs2;
-        offset  = TT_PEEK_USHORT( p );
+        p     += num_segs2;
+        delta  = TT_PEEK_SHORT( p );
+        p     += num_segs2;
+        offset = TT_PEEK_USHORT( p );
 
-        /* find the first segment containing `charcode' */
-        if ( cmap->flags & TT_CMAP_FLAG_OVERLAPPED )
+        /* search the first segment containing `charcode' */
+        if ( cmap->flags & TT_CMAP_FLAG_OVERLAPPING )
         {
           FT_UInt  i;
 
@@ -1091,7 +1091,7 @@
           if ( offset == 0xFFFFU )
             mid = max + 1;
 
-          /* find in segments before the current segment */
+          /* search in segments before the current segment */
           for ( i = max ; i > 0; i-- )
           {
             FT_UInt  prev_end;
@@ -1103,13 +1103,13 @@
             if ( charcode > prev_end )
               break;
 
-            end     = prev_end;
-            p      += 2 + num_segs2;
-            start   = TT_PEEK_USHORT( p );
-            p      += num_segs2;
-            delta   = TT_PEEK_SHORT( p );
-            p      += num_segs2;
-            offset  = TT_PEEK_USHORT( p );
+            end    = prev_end;
+            p     += 2 + num_segs2;
+            start  = TT_PEEK_USHORT( p );
+            p     += num_segs2;
+            delta  = TT_PEEK_SHORT( p );
+            p     += num_segs2;
+            offset = TT_PEEK_USHORT( p );
 
             if ( offset != 0xFFFFU )
               mid = i - 1;
@@ -1120,38 +1120,38 @@
           {
             if ( i != max )
             {
-              p       = cmap->data + 14 + max * 2;
-              end     = TT_PEEK_USHORT( p );
-              p      += 2 + num_segs2;
-              start   = TT_PEEK_USHORT( p );
-              p      += num_segs2;
-              delta   = TT_PEEK_SHORT( p );
-              p      += num_segs2;
-              offset  = TT_PEEK_USHORT( p );
+              p      = cmap->data + 14 + max * 2;
+              end    = TT_PEEK_USHORT( p );
+              p     += 2 + num_segs2;
+              start  = TT_PEEK_USHORT( p );
+              p     += num_segs2;
+              delta  = TT_PEEK_SHORT( p );
+              p     += num_segs2;
+              offset = TT_PEEK_USHORT( p );
             }
 
             mid = max;
 
-            /* find in segments after the current segment */
+            /* search in segments after the current segment */
             for ( i = max + 1; i < num_segs; i++ )
             {
               FT_UInt  next_end, next_start;
 
 
-              p           = cmap->data + 14 + i * 2;
-              next_end    = TT_PEEK_USHORT( p );
-              p          += 2 + num_segs2;
-              next_start  = TT_PEEK_USHORT( p );
+              p          = cmap->data + 14 + i * 2;
+              next_end   = TT_PEEK_USHORT( p );
+              p         += 2 + num_segs2;
+              next_start = TT_PEEK_USHORT( p );
 
               if ( charcode < next_start )
                 break;
 
-              end     = next_end;
-              start   = next_start;
-              p      += num_segs2;
-              delta   = TT_PEEK_SHORT( p );
-              p      += num_segs2;
-              offset  = TT_PEEK_USHORT( p );
+              end    = next_end;
+              start  = next_start;
+              p     += num_segs2;
+              delta  = TT_PEEK_SHORT( p );
+              p     += num_segs2;
+              offset = TT_PEEK_USHORT( p );
 
               if ( offset != 0xFFFFU )
                 mid = i;
@@ -1167,17 +1167,17 @@
             }
           }
 
-          /* end, start, delta and offset are for the i'th segment */
+          /* end, start, delta, and offset are for the i'th segment */
           if ( mid != i )
           {
-            p       = cmap->data + 14 + mid * 2;
-            end     = TT_PEEK_USHORT( p );
-            p      += 2 + num_segs2;
-            start   = TT_PEEK_USHORT( p );
-            p      += num_segs2;
-            delta   = TT_PEEK_SHORT( p );
-            p      += num_segs2;
-            offset  = TT_PEEK_USHORT( p );
+            p      = cmap->data + 14 + mid * 2;
+            end    = TT_PEEK_USHORT( p );
+            p     += 2 + num_segs2;
+            start  = TT_PEEK_USHORT( p );
+            p     += num_segs2;
+            delta  = TT_PEEK_SHORT( p );
+            p     += num_segs2;
+            offset = TT_PEEK_USHORT( p );
           }
         }
         else
@@ -1247,7 +1247,7 @@
   tt_cmap4_char_index( TT_CMap    cmap,
                        FT_UInt32  char_code )
   {
-    if ( char_code >= 0x10000U )
+    if ( char_code >= 0x10000UL )
       return 0;
 
     if ( cmap->flags & TT_CMAP_FLAG_UNSORTED )
@@ -1927,14 +1927,14 @@
 
   FT_CALLBACK_DEF( FT_Error )
   tt_cmap12_init( TT_CMap12  cmap,
-                  FT_Byte*  table )
+                  FT_Byte*   table )
   {
-    cmap->cmap.data   = table;
+    cmap->cmap.data  = table;
 
-    table            += 12;
-    cmap->num_groups  = FT_PEEK_ULONG( table );
+    table           += 12;
+    cmap->num_groups = FT_PEEK_ULONG( table );
 
-    cmap->valid       = 0;
+    cmap->valid      = 0;
 
     return SFNT_Err_Ok;
   }
@@ -1992,9 +1992,9 @@
   }
 
 
-  /* find the index of the charcode next to cmap->cur_charcode */
-  /* cmap->cur_group should be set up properly by caller       */
-  /*                                                           */
+  /* search the index of the charcode next to cmap->cur_charcode */
+  /* cmap->cur_group should be set up properly by caller         */
+  /*                                                             */
   static void
   tt_cmap12_next( TT_CMap12  cmap )
   {
@@ -2071,10 +2071,10 @@
     while ( min < max )
     {
       mid = ( min + max ) >> 1;
-      p = cmap->data + 16 + 12 * mid;
+      p   = cmap->data + 16 + 12 * mid;
 
-      start    = TT_NEXT_ULONG( p );
-      end      = TT_NEXT_ULONG( p );
+      start = TT_NEXT_ULONG( p );
+      end   = TT_NEXT_ULONG( p );
 
       if ( char_code < start )
         max = mid;
@@ -2105,9 +2105,9 @@
           return 0;
       }
 
-      cmap12->valid = 1;
+      cmap12->valid        = 1;
       cmap12->cur_charcode = char_code;
-      cmap12->cur_group = mid;
+      cmap12->cur_group    = mid;
 
       if ( !gindex )
       {
@@ -2304,7 +2304,8 @@
               FT_CMap  ttcmap;
 
 
-              if ( !FT_CMap_New( (FT_CMap_Class)clazz, cmap, &charmap, &ttcmap ) )
+              if ( !FT_CMap_New( (FT_CMap_Class)clazz,
+                                 cmap, &charmap, &ttcmap ) )
               {
                 /* it is simpler to directly set `flags' than adding */
                 /* a parameter to FT_CMap_New                        */
--- a/src/sfnt/ttcmap.h
+++ b/src/sfnt/ttcmap.h
@@ -28,8 +28,8 @@
 FT_BEGIN_HEADER
 
 
-#define TT_CMAP_FLAG_UNSORTED   1
-#define TT_CMAP_FLAG_OVERLAPPED 2
+#define TT_CMAP_FLAG_UNSORTED     1
+#define TT_CMAP_FLAG_OVERLAPPING  2
 
   typedef struct  TT_CMapRec_
   {