shithub: freetype+ttf2subf

Download patch

ref: f35ff8013254552d5f9d5ea347de24dd645f1c98
parent: e20ab691c357c548e7c90eaca3721f382d5c116e
author: Werner Lemberg <[email protected]>
date: Mon Jun 2 17:58:05 EDT 2003

* src/cff/cffobjs.c (cff_face_init): Use symbolic names for
Adobe specific encoding IDs (there was a wrong EID value for custom
encoding).

* src/cff/cffcmap.h (CFF_CMapStdRec): Remove `count'.
* src/cff/cffcmap.c (cff_cmap_encoding_init,
cff_cmap_encoding_done): Updated.
(cff_cmap_encoding_char_index, cff_cmap_encoding_char_next): Use
256 as limit for character code.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2003-06-02  Werner Lemberg  <[email protected]>
+
+	* src/cff/cffobjs.c (cff_face_init): Use symbolic names for
+	Adobe specific encoding IDs (there was a wrong EID value for custom
+	encoding).
+
+	* src/cff/cffcmap.h (CFF_CMapStdRec): Remove `count'.
+	* src/cff/cffcmap.c (cff_cmap_encoding_init,
+	cff_cmap_encoding_done): Updated.
+	(cff_cmap_encoding_char_index, cff_cmap_encoding_char_next): Use
+	256 as limit for character code.
+
 2003-06-01  Werner Lemberg  <[email protected]>
 
 	* src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -2270,7 +2270,7 @@
       return FT_Err_Invalid_Argument;
 
     face   = charmap->face;
-    memory = FT_FACE_MEMORY(face);
+    memory = FT_FACE_MEMORY( face );
 
     if ( !FT_ALLOC( cmap, clazz->size ) )
     {
--- a/src/cff/cffcmap.c
+++ b/src/cff/cffcmap.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    CFF character mapping table (cmap) support (body).                   */
 /*                                                                         */
-/*  Copyright 2002 by                                                      */
+/*  Copyright 2002, 2003 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -36,7 +36,6 @@
     CFF_Encoding  encoding = &cff->encoding;
 
 
-    cmap->count = encoding->count;
     cmap->gids  = encoding->codes;
     
     return 0;
@@ -46,7 +45,6 @@
   FT_CALLBACK_DEF( void )
   cff_cmap_encoding_done( CFF_CMapStd  cmap )
   {
-    cmap->count = 0;
     cmap->gids  = NULL;
   }
 
@@ -58,7 +56,7 @@
     FT_UInt  result = 0;
 
 
-    if ( char_code < cmap->count )
+    if ( char_code < 256 )
       result = cmap->gids[char_code];
     
     return result;
@@ -75,7 +73,7 @@
 
     *pchar_code = 0;
 
-    if ( char_code < cmap->count )
+    if ( char_code < 255 )
     {
       FT_UInt  code = (FT_UInt)(char_code + 1);
       
@@ -82,7 +80,7 @@
 
       for (;;)
       {
-        if ( code >= cmap->count )
+        if ( code >= 256 )
           break;
           
         result = cmap->gids[code];
@@ -164,7 +162,7 @@
       pair = cmap->pairs;
       for ( n = 0; n < count; n++ )
       {
-        FT_UInt      sid   = charset->sids[n];
+        FT_UInt      sid = charset->sids[n];
         const char*  gname;
 
 
--- a/src/cff/cffcmap.h
+++ b/src/cff/cffcmap.h
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    CFF character mapping table (cmap) support (specification).          */
 /*                                                                         */
-/*  Copyright 2002 by                                                      */
+/*  Copyright 2002, 2003 by                                                */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -38,7 +38,6 @@
   typedef struct  CFF_CMapStdRec_
   {
     FT_CMapRec  cmap;
-    FT_UInt     count;
     FT_UShort*  gids;   /* up to 256 elements */
     
   } CFF_CMapStdRec;
--- a/src/cff/cffload.c
+++ b/src/cff/cffload.c
@@ -1505,8 +1505,8 @@
                     FT_ULong     base_offset,
                     FT_ULong     offset )
   {
-    FT_Memory  memory     = stream->memory;
-    FT_Error   error      = 0;
+    FT_Memory  memory = stream->memory;
+    FT_Error   error  = 0;
     FT_UShort  glyph_sid;
 
 
@@ -1557,7 +1557,6 @@
 
           while ( j < num_glyphs )
           {
-
             /* Read the first glyph sid of the range. */
             if ( FT_READ_USHORT( glyph_sid ) )
               goto Exit;
@@ -1699,11 +1698,11 @@
                      FT_ULong      base_offset,
                      FT_ULong      offset )
   {
-    FT_Error    error  = 0;
-    FT_UInt     count;
-    FT_UInt     j;
-    FT_UShort   glyph_sid;
-    FT_UInt     glyph_code;
+    FT_Error   error = 0;
+    FT_UInt    count;
+    FT_UInt    j;
+    FT_UShort  glyph_sid;
+    FT_UInt    glyph_code;
 
 
     /* Check for charset->sids.  If we do not have this, we fail. */
@@ -1720,8 +1719,8 @@
       encoding->codes[j] = 0;
     }
 
-    /* Note: The encoding table in a CFF font is indexed by glyph index,  */
-    /* where the first encoded glyph index is 1.  Hence, we read the char */
+    /* Note: The encoding table in a CFF font is indexed by glyph index;  */
+    /* the first encoded glyph index is 1.  Hence, we read the character  */
     /* code (`glyph_code') at index j and make the assignment:            */
     /*                                                                    */
     /*    encoding->codes[glyph_code] = j + 1                             */
@@ -1734,7 +1733,6 @@
 
     if ( offset > 1 )
     {
-
       encoding->offset = base_offset + offset;
 
       /* we need to parse the table to determine its size */
@@ -1857,13 +1855,13 @@
           /* Assign code to SID mapping. */
           encoding->sids[glyph_code] = glyph_sid;
 
-          /* First, lookup GID which has been assigned to */
-          /* SID glyph_sid.                               */
+          /* First, look up GID which has been assigned to */
+          /* SID glyph_sid.                                */
           for ( gindex = 0; gindex < num_glyphs; gindex++ )
           {
             if ( charset->sids[gindex] == glyph_sid )
             {
-              encoding->codes[glyph_code] = (FT_UShort) gindex;
+              encoding->codes[glyph_code] = (FT_UShort)gindex;
               break;
             }
           }
@@ -1875,10 +1873,10 @@
       FT_UInt i;
 
 
-      /* We take into account the fact a CFF font can use a predefined  */
-      /* encoding without containing all of the glyphs encoded by this  */
-      /* encoding (see the note at the end of section 12 in the CFF     */
-      /* specification).                                                */
+      /* We take into account the fact a CFF font can use a predefined */
+      /* encoding without containing all of the glyphs encoded by this */
+      /* encoding (see the note at the end of section 12 in the CFF    */
+      /* specification).                                               */
 
       switch ( (FT_UInt)offset )
       {
@@ -1900,7 +1898,6 @@
 
         encoding->count = 0;
 
-
         for ( j = 0; j < 256; j++ )
         {
           /* If j is encoded, find the GID for it. */
@@ -2208,7 +2205,7 @@
     if ( font->num_glyphs > 0 )
     {
       error = cff_charset_load( &font->charset, font->num_glyphs, stream,
-                              base_offset, dict->charset_offset );
+                                base_offset, dict->charset_offset );
       if ( error )
         goto Exit;
 
--- a/src/cff/cffobjs.c
+++ b/src/cff/cffobjs.c
@@ -466,7 +466,7 @@
         CFF_Encoding   encoding = &cff->encoding;
 
 
-        for ( nn = 0; nn < (FT_UInt) root->num_charmaps; nn++ )
+        for ( nn = 0; nn < (FT_UInt)root->num_charmaps; nn++ )
         {
           cmap = root->charmaps[nn];
 
@@ -485,12 +485,12 @@
         cmaprec.encoding_id = 1;
         cmaprec.encoding    = FT_ENCODING_UNICODE;
 
-        nn = (FT_UInt) root->num_charmaps;
+        nn = (FT_UInt)root->num_charmaps;
 
         FT_CMap_New( &cff_cmap_unicode_class_rec, NULL, &cmaprec, NULL );
 
         /* if no Unicode charmap was previously selected, select this one */
-        if ( root->charmap == NULL && nn != (FT_UInt) root->num_charmaps )
+        if ( root->charmap == NULL && nn != (FT_UInt)root->num_charmaps )
           root->charmap = root->charmaps[nn];
 
       Skip_Unicode:
@@ -504,19 +504,19 @@
 
           if ( encoding->offset == 0 )
           {
-            cmaprec.encoding_id = 0;
+            cmaprec.encoding_id = TT_ADOBE_ID_STANDARD;
             cmaprec.encoding    = FT_ENCODING_ADOBE_STANDARD;
             clazz               = &cff_cmap_encoding_class_rec;
           }
           else if ( encoding->offset == 1 )
           {
-            cmaprec.encoding_id = 1;
+            cmaprec.encoding_id = TT_ADOBE_ID_EXPERT;
             cmaprec.encoding    = FT_ENCODING_ADOBE_EXPERT;
             clazz               = &cff_cmap_encoding_class_rec;
           }
           else
           {
-            cmaprec.encoding_id = 3;
+            cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM;
             cmaprec.encoding    = FT_ENCODING_ADOBE_CUSTOM;
             clazz               = &cff_cmap_encoding_class_rec;
           }