shithub: freetype+ttf2subf

Download patch

ref: 428c2e4f62abb2c7f158f7f0da43d82f848db30d
parent: 2dd1e657ba9c39868e6213b7281b416c92235f39
author: Werner Lemberg <[email protected]>
date: Fri Apr 25 01:35:04 EDT 2003

* src/bdf/bdflib.c (hash_bucket, hash_lookup): Use `const' for first
argument.
(bdf_get_font_property): Use `const' for third argument.
Updated all callers.
* src/bdf/bdfdrivr.c (BDF_Face_Init): Set pixel width and height
similar to the PCF driver.
* src/bdf/bdf.h (_hashnode): Use `const' for `key'.
Updated.

* src/gzip/ftgzip.c: C++ doesn't like that the array `inflate_mask'
is declared twice.  It is perhaps better to modify the zlip source
files directly instead of this hack.
(zcalloc, zfree, ft_gzip_stream_close, ft_gzip_stream_io): Add casts
to make build with g++ successful.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,32 @@
+2003-04-25  Werner Lemberg  <[email protected]>
+
+	* src/bdf/bdflib.c (hash_bucket, hash_lookup): Use `const' for first
+	argument.
+	(bdf_get_font_property): Use `const' for third argument.
+	Updated all callers.
+	* src/bdf/bdfdrivr.c (BDF_Face_Init): Set pixel width and height
+	similar to the PCF driver.
+	* src/bdf/bdf.h (_hashnode): Use `const' for `key'.
+	Updated.
+
+	* src/gzip/ftgzip.c: C++ doesn't like that the array `inflate_mask'
+	is declared twice.  It is perhaps better to modify the zlip source
+	files directly instead of this hack.
+	(zcalloc, zfree, ft_gzip_stream_close, ft_gzip_stream_io): Add casts
+	to make build with g++ successful.
+
+2003-04-24  Manish Singh  <[email protected]>
+
+	* src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c
+	(T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Split on `-'
+	also for searching the style name.
+
 2003-04-24  David Turner  <[email protected]>
 
-        * src/pcf/pcfread.c (pcf_load_font): fixed the computation of
-        face->num_glyphs, this required increase the value by 1 to respect
-        the convention that gindex 0 always corresponds to the "missing
-        glyph".
+	* src/pcf/pcfread.c (pcf_load_font): fixed the computation of
+	face->num_glyphs, this required increase the value by 1 to respect
+	the convention that gindex 0 always corresponds to the "missing
+	glyph".
 
 2003-04-24  Werner Lemberg  <[email protected]>
 
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -1426,8 +1426,8 @@
     if ( char_height < 1 * 64 )
       char_height = 1 * 64;
 
-   /* Compute pixel sizes in 26.6 units. we use rounding
-    */
+    /* Compute pixel sizes in 26.6 units. we use rounding
+     */
     dim_x = ( ( char_width  * horz_resolution + (36+32*72) ) / 72 ) & -64;
     dim_y = ( ( char_height * vert_resolution + (36+32*72) ) / 72 ) & -64;
 
--- a/src/bdf/bdf.h
+++ b/src/bdf/bdf.h
@@ -1,6 +1,6 @@
 /*
  * Copyright 2000 Computing Research Labs, New Mexico State University
- * Copyright 2001, 2002 Francesco Zappa Nardelli
+ * Copyright 2001, 2002, 2003 Francesco Zappa Nardelli
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
@@ -159,8 +159,8 @@
 
   typedef struct  _hashnode_
   {
-    char*  key;
-    void*  data;
+    const char*  key;
+    void*        data;
   
   } _hashnode, *hashnode;
 
@@ -283,7 +283,7 @@
 
   FT_LOCAL( bdf_property_t * )
   bdf_get_font_property( bdf_font_t*  font,
-                         char*        name );
+                         const char*  name );
 
 
 FT_END_HEADER
--- a/src/bdf/bdfdrivr.c
+++ b/src/bdf/bdfdrivr.c
@@ -169,8 +169,6 @@
   };
 
 
-
-
   FT_CALLBACK_DEF( FT_Error )
   BDF_Face_Done( BDF_Face  face )
   {
@@ -250,7 +248,7 @@
                          FT_FACE_FLAG_HORIZONTAL  |
                          FT_FACE_FLAG_FAST_GLYPHS;
 
-      prop = bdf_get_font_property( font, (char *)"SPACING" );
+      prop = bdf_get_font_property( font, "SPACING" );
       if ( prop != NULL )
         if ( prop->format == BDF_ATOM )
           if ( prop->value.atom != NULL )
@@ -262,7 +260,7 @@
       /* FZ XXX: I need a font to implement this */
 
       root->style_flags = 0;
-      prop = bdf_get_font_property( font, (char *)"SLANT" );
+      prop = bdf_get_font_property( font, "SLANT" );
       if ( prop != NULL )
         if ( prop->format == BDF_ATOM )
           if ( prop->value.atom != NULL )
@@ -270,7 +268,7 @@
                  ( *(prop->value.atom) == 'I' ) )
               root->style_flags |= FT_STYLE_FLAG_ITALIC;
 
-      prop = bdf_get_font_property( font, (char *)"WEIGHT_NAME" );
+      prop = bdf_get_font_property( font, "WEIGHT_NAME" );
       if ( prop != NULL )
         if ( prop->format == BDF_ATOM )
           if ( prop->value.atom != NULL )
@@ -277,7 +275,7 @@
             if ( *(prop->value.atom) == 'B' )
               root->style_flags |= FT_STYLE_FLAG_BOLD;
 
-      prop = bdf_get_font_property( font, (char *)"FAMILY_NAME" );
+      prop = bdf_get_font_property( font, "FAMILY_NAME" );
       if ( ( prop != NULL ) && ( prop->value.atom != NULL ) )
       {
         int  l = ft_strlen( prop->value.atom ) + 1;
@@ -307,22 +305,24 @@
       if ( FT_NEW_ARRAY( root->available_sizes, 1 ) )
         goto Exit;
 
-      prop = bdf_get_font_property( font, (char *)"AVERAGE_WIDTH" );
+      prop = bdf_get_font_property( font, "AVERAGE_WIDTH" );
       if ( ( prop != NULL ) && ( prop->value.int32 >= 10 ) )
         root->available_sizes->width = (short)( prop->value.int32 / 10 );
 
-      prop = bdf_get_font_property( font, (char *)"PIXEL_SIZE" );
-      if ( prop != NULL )
-        root->available_sizes->height = (short) prop->value.int32;
+      prop = bdf_get_font_property( font, "PIXEL_SIZE" );
+      if ( prop != NULL ) {
+        root->available_sizes->height =
+        root->available_sizes->width  = (short) prop->value.int32;
+      }
       else
       {
-        prop = bdf_get_font_property( font, (char *)"POINT_SIZE" );
+        prop = bdf_get_font_property( font, "POINT_SIZE" );
         if ( prop != NULL )
         {
           bdf_property_t  *yres;
 
 
-          yres = bdf_get_font_property( font, (char *)"RESOLUTION_Y" );
+          yres = bdf_get_font_property( font, "RESOLUTION_Y" );
           if ( yres != NULL )
           {
             FT_TRACE4(( "POINT_SIZE: %d  RESOLUTION_Y: %d\n",
@@ -371,9 +371,9 @@
 
 
         charset_registry =
-          bdf_get_font_property( font, (char *)"CHARSET_REGISTRY" );
+          bdf_get_font_property( font, "CHARSET_REGISTRY" );
         charset_encoding =
-          bdf_get_font_property( font, (char *)"CHARSET_ENCODING" );
+          bdf_get_font_property( font, "CHARSET_ENCODING" );
         if ( ( charset_registry != NULL ) && ( charset_encoding != NULL ) )
         {
           if ( ( charset_registry->format == BDF_ATOM ) &&
@@ -640,7 +640,7 @@
 
     FT_ASSERT( face && face->bdffont );
 
-    prop = bdf_get_font_property( face->bdffont, (char*)prop_name );
+    prop = bdf_get_font_property( face->bdffont, prop_name );
     if ( prop != NULL )
     {
       switch ( prop->format )
--- a/src/bdf/bdflib.c
+++ b/src/bdf/bdflib.c
@@ -183,10 +183,10 @@
   (*hash_free_func)( hashnode  node );
 
   static hashnode*
-  hash_bucket( char*       key,
-               hashtable*  ht )
+  hash_bucket( const char*  key,
+               hashtable*   ht )
   {
-    char*          kp  = key;
+    const char*    kp  = key;
     unsigned long  res = 0;
     hashnode*      bp  = ht->table, *ndp;
 
@@ -317,7 +317,7 @@
 
 
   static hashnode
-  hash_lookup( char*       key,
+  hash_lookup( const char* key,
                hashtable*  ht )
   {
     hashnode *np = hash_bucket( key, ht );
@@ -1882,7 +1882,7 @@
       /*                                                                  */
       /* This is *always* done regardless of the options, because X11     */
       /* requires these two fields to compile fonts.                      */
-      if ( bdf_get_font_property( p->font, (char *)"FONT_ASCENT" ) == 0 )
+      if ( bdf_get_font_property( p->font, "FONT_ASCENT" ) == 0 )
       {
         p->font->font_ascent = p->font->bbx.ascent;
         ft_sprintf( nbuf, "%hd", p->font->bbx.ascent );
@@ -1894,7 +1894,7 @@
         p->font->modified = 1;
       }
 
-      if ( bdf_get_font_property( p->font, (char *)"FONT_DESCENT" ) == 0 )
+      if ( bdf_get_font_property( p->font, "FONT_DESCENT" ) == 0 )
       {
         p->font->font_descent = p->font->bbx.descent;
         ft_sprintf( nbuf, "%hd", p->font->bbx.descent );
@@ -2418,7 +2418,7 @@
 
   FT_LOCAL_DEF( bdf_property_t * )
   bdf_get_font_property( bdf_font_t*  font,
-                         char*        name )
+                         const char*  name )
   {
     hashnode  hn;
 
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -2374,8 +2374,8 @@
 
 
       metrics.bearing_x = decoder.builder.left_bearing.x;
-	  metrics.bearing_y = decoder.builder.left_bearing.y;
-	  metrics.advance   = decoder.builder.advance.x;
+      metrics.bearing_y = decoder.builder.left_bearing.y;
+      metrics.advance   = decoder.builder.advance.x;
       error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
                 face->root.internal->incremental_interface->object,
                 glyph_index, FALSE, &metrics );
--- a/src/cid/cidgload.c
+++ b/src/cid/cidgload.c
@@ -166,8 +166,8 @@
 
 
       metrics.bearing_x = decoder->builder.left_bearing.x;
-	  metrics.bearing_y = decoder->builder.left_bearing.y;
-	  metrics.advance   = decoder->builder.advance.x;
+      metrics.bearing_y = decoder->builder.left_bearing.y;
+      metrics.advance   = decoder->builder.advance.x;
       error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
                 face->root.internal->incremental_interface->object,
                 glyph_index, FALSE, &metrics );
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -4,7 +4,7 @@
 /*                                                                         */
 /*    CID objects manager (body).                                          */
 /*                                                                         */
-/*  Copyright 1996-2001, 2002 by                                           */
+/*  Copyright 1996-2001, 2002, 2003 by                                     */
 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
 /*                                                                         */
 /*  This file is part of the FreeType project, and may only be used,       */
@@ -361,8 +361,10 @@
             full++;
           }
 
-          root->style_name = ( *full == ' ' ) ? full + 1
-                                              : (char *)"Regular";
+          if ( *full == ' ' || *full == '-' )
+            root->style_name = full + 1;
+          else
+            root->style_name = (char *)"Regular";
         }
         else
         {
--- a/src/gzip/ftgzip.c
+++ b/src/gzip/ftgzip.c
@@ -48,12 +48,23 @@
 #include "zlib.h"
 
 #undef  SLOW
-#define SLOW  1  /* we can't use asm-optimized sources here !! */
+#define SLOW  1  /* we can't use asm-optimized sources here! */
 
+  /* Urgh.  `inflate_mask' must not be declared twice -- C++ doesn't like
+     this.  We temporarily rename it and load all necessary header files. */
+#define inflate_mask ft_gzip_dummy
+#include "zutil.h"
+#include "inftrees.h"
+#include "infblock.h"
+#include "infcodes.h"
+#include "infutil.h"
+#undef  inflate_mask
+
+  /* infutil.c must be included before infcodes.c */
 #include "zutil.c"
 #include "inftrees.c"
-#include "infcodes.c"
 #include "infutil.c"
+#include "infcodes.c"
 #include "infblock.c"
 #include "inflate.c"
 #include "adler32.c"
@@ -102,7 +113,7 @@
             unsigned  items,
             unsigned  size )
   {
-    return ft_gzip_alloc( opaque, items, size );
+    return ft_gzip_alloc( (FT_Memory)opaque, items, size );
   }
 
   local void
@@ -109,7 +120,7 @@
   zcfree( voidpf  opaque,
           voidpf  ptr )
   {
-    ft_gzip_free( opaque, ptr );
+    ft_gzip_free( (FT_Memory)opaque, ptr );
   }
 
 #endif /* !SYSTEM_ZLIB */
@@ -502,7 +513,7 @@
   static void
   ft_gzip_stream_close( FT_Stream  stream )
   {
-    FT_GZipFile  zip    = stream->descriptor.pointer;
+    FT_GZipFile  zip    = (FT_GZipFile)stream->descriptor.pointer;
     FT_Memory    memory = stream->memory;
 
 
@@ -524,7 +535,7 @@
                      FT_Byte*   buffer,
                      FT_ULong   count )
   {
-    FT_GZipFile  zip = stream->descriptor.pointer;
+    FT_GZipFile  zip = (FT_GZipFile)stream->descriptor.pointer;
 
 
     return ft_gzip_file_io( zip, pos, buffer, count );
--- a/src/pcf/pcfdriver.c
+++ b/src/pcf/pcfdriver.c
@@ -478,7 +478,7 @@
       }
       else
       {
-        /* apparently, the PCF driver loads all properties as signed integers!
+        /* Apparently, the PCF driver loads all properties as signed integers!
          * This really doesn't seem to be a problem, because this is
          * sufficient for any meaningful values.
          */
--- a/src/pcf/pcfread.c
+++ b/src/pcf/pcfread.c
@@ -972,12 +972,12 @@
       else
         root->family_name = 0;
 
-     /* note: we shift all glyph indices by +1 since we must
-      * respect the convention that glyph 0 always correspond
-      * to the "missing glyph".
-      *
-      * this implies bumping the number of "available" glyphs by 1
-      */
+      /* Note: We shift all glyph indices by +1 since we must
+       * respect the convention that glyph 0 always corresponds
+       * to the "missing glyph".
+       *
+       * This implies bumping the number of "available" glyphs by 1.
+       */
       root->num_glyphs = face->nmetrics + 1;
 
       root->num_fixed_sizes = 1;
--- a/src/type1/t1objs.c
+++ b/src/type1/t1objs.c
@@ -355,8 +355,10 @@
             full++;
           }
 
-          root->style_name = ( *full == ' ' ? full + 1
-                                            : (char *)"Regular" );
+          if ( *full == ' ' || *full == '-' )
+            root->style_name = full + 1;
+          else
+            root->style_name = (char *)"Regular";
         }
         else
           root->style_name = (char *)"Regular";
--- a/src/type42/t42objs.c
+++ b/src/type42/t42objs.c
@@ -223,8 +223,10 @@
           full++;
         }
 
-        root->style_name = ( *full == ' ' ? full + 1
-                                          : (char *)"Regular" );
+        if ( *full == ' ' || *full == '-' )
+          root->style_name = full + 1;
+        else
+          root->style_name = (char *)"Regular";
       }
       else
         root->style_name = (char *)"Regular";