shithub: freetype+ttf2subf

Download patch

ref: e9e130c0711229a1894a92b898580a073ec722cb
parent: 145f94cb261afc5bdbd924b130cd5d856c42e4b9
author: Werner Lemberg <[email protected]>
date: Fri Dec 7 16:56:32 EST 2001

Formatting.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,51 +1,47 @@
 2001-12-07  David Turner  <[email protected]>
 
-    * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: added new
-    charmap cache
+	* include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new
+	charmap cache.
 
-
 2001-12-06  Leonard Rosenthol  <[email protected]>
 
-	* src/base/ftmac.c: Added support for reading .dfont files on 
-	Mac OS X.  Aldo added a new routine (FT_GetFile_From_Mac_Name())
-	which looks up a given font by name in the Mac OS and returns
-	the disk file where it resides.
-	
-	* include/freetype/ftmac.h: Exported FT_GetFile_From_Mac_Name()
+	Added support for reading .dfont files on Mac OS X.  Also added a
+	new routine which looks up a given font by name in the Mac OS and
+	returns the disk file where it resides.
 
+	* src/base/ftmac.c (is_dfont): New auxiliary function.
+	(FT_New_Face_From_dfont): New function.
+	(FT_GetFile_From_Mac_Name): New exported function.
+	(FT_New_Face): Updated.
+	* include/freetype/ftmac.h: Updated.
 
+2001-12-06  David Turner  <[email protected]>
+
+	* src/cache/Jamfile: Updated.
+
 2001-12-06  Werner Lemberg  <[email protected]>
 
 	* INSTALL: Small update.
 
-
 2001-12-05  David Turner  <[email protected]>
 
-    * src/base/ftglyph.c (FT_Glyph_To_Bitmap): re-ordered code for debugging
-    purposes..
+	* src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for
+	debugging purposes.
 
-    * src/smooth/ftsmooth.c (ft_smooth_render): fixed a nasty hidden bug where
-    outline shifting wasn't correctly undone after bitmap rasterization. this
-    created problems with certain glyphs (like '"' of certain fonts..) and
-    the cache system..
+	* src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug
+	where outline shifting wasn't correctly undone after bitmap
+	rasterization.  This created problems with certain glyphs (like '"'
+	of certain fonts) and the cache system.
 
+	* src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo.
+	* src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo.
+	(ps2_hints_apply): Small fix.
 
 2001-12-05  David Turner  <[email protected]>
 
-    First of all, a big thanks to Werner and Antoine for their latest work !!
-    
-    * src/pshinter/pshalgo2.c (psh2_hint_table_init),
-      src/pshinter/pshalgo1.c (psh1_hint_table_init): removed compiler
-      warnings
-
-    * include/freetype/cache/*, src/cache/*: yet another massive rewrite of
-    the caching sub-system, in order to both increase performance and allow
-    simpler cache sub-classing. As an example, the code for the image and
-    sbit caches is now much simpler
-
 	* src/pshinter/pshalgo2.c (psh2_hint_table_init),
 	src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler
-	warnings
+	warnings.
 
 	* include/freetype/cache/*, src/cache/*: Yet another massive rewrite
 	of the caching sub-system in order to both increase performance and
@@ -280,7 +276,7 @@
 2001-10-18  David Turner  <[email protected]>
 
 	* src/psnames/pstables.h, src/tools/glnames.py: Rewrote the
-	"glnames.py" script used to generate the "pstables.h" header file. 
+	"glnames.py" script used to generate the "pstables.h" header file.
 	The old one contained a serious bug that made FreeType return
 	incorrect glyph names for certain glyphs.
 
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -186,16 +186,15 @@
 
 GLYPH_TO_BITMAP-BUG
 
-  Calling FT_Glyph_To_Bitmap sometimes modifies the original glyph outline,
-  creating weird alignment artefacts.
+  Calling FT_Glyph_To_Bitmap() sometimes modifies the original glyph
+  outline, creating weird alignment artefacts.
   
-  this subtle bug was really in the file src/smooth/ftsmooth.c. Basically,
+  This subtle bug was really in the file src/smooth/ftsmooth.c.  Basically,
   the outline was shifted before rendering it into a new bitmap buffer.
-  However, it wasn't properly un-shifted after that operation..
+  However, it wasn't properly un-shifted after that operation.
 
-  this was only noticeable with certain glyphs or certain fonts and crept
-  for a long time here..
+  This was only noticeable with certain glyphs or certain fonts; it crept in
+  a long time ago.
   
-
 
 === end of file ===
--- a/include/freetype/ftmac.h
+++ b/include/freetype/ftmac.h
@@ -25,8 +25,8 @@
 /***************************************************************************/
 
 
-#ifndef __FT_MAC_H__
-#define __FT_MAC_H__
+#ifndef __FTMAC_H__
+#define __FTMAC_H__
 
 
 #include <ft2build.h>
@@ -95,28 +95,27 @@
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
-  /*    FT_GetFile_From_Mac_Name				           */
+  /*    FT_GetFile_From_Mac_Name                                           */
   /*                                                                       */
   /* <Description>                                                         */
   /*    Returns an FSSpec for the disk file containing the named font.     */
   /*                                                                       */
   /* <Input>                                                               */
-  /*    fontName   :: Mac OS name of the font (eg. Times New Roman Bold)   */
+  /*    fontName   :: Mac OS name of the font (eg. Times New Roman Bold).  */
   /*                                                                       */
   /* <Output>                                                              */
-  /*    pathSpec   :: FSSpec to the file.  For passing to FT_New_Face      */
+  /*    pathSpec   :: FSSpec to the file.  For passing to @FT_New_Face.    */
   /*                                                                       */
-  /*    face_index :: index of the face  For passing to FT_New_Face        */
+  /*    face_index :: Index of the face.  For passing to @FT_New_Face.     */
   /*                                                                       */
   /* <Return>                                                              */
   /*    FreeType error code.  0 means success.                             */
   /*                                                                       */
-  /*                                                                       */
   FT_EXPORT_DEF( FT_Error )
-	FT_GetFile_From_Mac_Name( char* fontName, 
-				  FSSpec* pathSpec,
-				  FT_Long* face_index );
-	
+  FT_GetFile_From_Mac_Name( char*     fontName, 
+                            FSSpec*   pathSpec,
+                            FT_Long*  face_index );
+
   /* */
 
 
@@ -123,7 +122,7 @@
 FT_END_HEADER
 
 
-#endif /* __FT_MAC_H__ */
+#endif /* __FTMAC_H__ */
 
 
 /* END */
--- a/src/autohint/ahhint.c
+++ b/src/autohint/ahhint.c
@@ -384,8 +384,8 @@
     ah_debug_disable_horz = no_horz_edges;
     ah_debug_disable_vert = no_vert_edges;
 #else
-    FT_UNUSED(no_horz_edges);
-    FT_UNUSED(no_vert_edges);    
+    FT_UNUSED( no_horz_edges );
+    FT_UNUSED( no_vert_edges );    
 #endif
     /* AH_Interpolate_Blue_Edges( hinter ); -- doesn't seem to help      */
     /* reduce the problem of the disappearing eye in the `e' of Times... */
--- a/src/base/ftdbgmem.c
+++ b/src/base/ftdbgmem.c
@@ -663,7 +663,7 @@
 
 #else  /* !FT_DEBUG_MEMORY */
  
- /* ansi C doesn't like empty source files */
+  /* ANSI C doesn't like empty source files */
   extern const FT_Byte  _debug_mem_dummy = 0;
 
 #endif /* !FT_DEBUG_MEMORY */
--- a/src/base/ftglyph.c
+++ b/src/base/ftglyph.c
@@ -601,10 +601,10 @@
     /* create result bitmap glyph */
     error = ft_new_glyph( glyph->library, &ft_bitmap_glyph_class,
                           (FT_Glyph*)&bitmap );
-    if (error)
+    if ( error )
       goto Exit;
 
-#if 0      
+#if 0
     /* if `origin' is set, translate the glyph image */
     if ( origin )
       FT_Glyph_Transform( glyph, 0, origin );
@@ -627,7 +627,7 @@
     }
 #endif
 
-    if (error)
+    if ( error )
       goto Exit;
 
     /* in case of success, copy the bitmap to the glyph bitmap */
@@ -644,9 +644,9 @@
     *the_glyph = FT_GLYPH( bitmap );
 
   Exit:
-    if (error && bitmap)
-      FT_Done_Glyph( FT_GLYPH(bitmap) );
-      
+    if ( error && bitmap )
+      FT_Done_Glyph( FT_GLYPH( bitmap ) );
+
     return error;
 
   Bad:
--- a/src/base/ftmac.c
+++ b/src/base/ftmac.c
@@ -74,7 +74,6 @@
 #include FT_MAC_H
 
 
-
   /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over
      TrueType in case *both* are available (this is not common,
      but it *is* possible). */
@@ -83,7 +82,6 @@
 #endif
 
 
-
   /* Quick'n'dirty Pascal string to C string converter.
      Warning: this call is not thread safe! Use with caution. */
   static char*
@@ -134,23 +132,26 @@
     return finfo.fdType;
   }
 
-	/* is this a Mac OS X .dfont file */
-	static Boolean is_dfont( FSSpec* spec )
-	{
-		int	nameLen = spec->name[0];
-		
-		if ( spec->name[nameLen-5] == '.' && 
-			 spec->name[nameLen-4] == 'd' && 
-			 spec->name[nameLen-3] == 'f' && 
-			 spec->name[nameLen-2] == 'o' && 
-			 spec->name[nameLen-1] == 'n' && 
-			 spec->name[nameLen]   == 't')
-			 return true;
-		else
-			return false;
-	}
-	
 
+  /* is this a Mac OS X .dfont file */
+  static Boolean
+  is_dfont( FSSpec*  spec )
+  {
+    int nameLen = spec->name[0];
+
+
+    if ( spec->name[nameLen - 5] == '.' &&
+         spec->name[nameLen - 4] == 'd' &&
+         spec->name[nameLen - 3] == 'f' &&
+         spec->name[nameLen - 2] == 'o' &&
+         spec->name[nameLen - 1] == 'n' &&
+         spec->name[nameLen    ] == 't'  )
+      return true;
+    else
+      return false;
+  }
+
+
   /* Given a PostScript font name, create the Macintosh LWFN file name. */
   static void
   create_lwfn_name( char*   ps_name,
@@ -236,9 +237,9 @@
 
 
   /* Look inside the FOND data, answer whether there should be an SFNT
-     resource, and answer the name of a possible LWFN Type 1 file. 
-     
-     Thanks to Paul Miller ([email protected]) for the fix 
+     resource, and answer the name of a possible LWFN Type 1 file.
+
+     Thanks to Paul Miller ([email protected]) for the fix
      to load a face OTHER than the first one in the FOND!
   */
   static void
@@ -305,8 +306,8 @@
         unsigned char*  suffixes = names[style->indexes[0] - 1];
 
 
-        for ( i=1; i<=suffixes[0]; i++ )
-          strcat( ps_name, p2c_str( names[suffixes[i] - 1 ] ) );
+        for ( i = 1; i <= suffixes[0]; i++ )
+          strcat( ps_name, p2c_str( names[suffixes[i] - 1] ) );
       }
       create_lwfn_name( ps_name, lwfn_file_name );
     }
@@ -384,7 +385,6 @@
 
       if ( code != last_code )
       {
-
         if ( last_code != -1 )
         {
           /* we're done adding a chunk, fill in the size field */
@@ -648,48 +648,51 @@
     return error;
   }
 
+
   /* Create a new FT_Face from a file spec to a suitcase file. */
   static FT_Error
   FT_New_Face_From_dfont( FT_Library  library,
-	                     FSSpec*     spec,
-	                     FT_Long     face_index,
-	                     FT_Face*    aface )
+                          FSSpec*     spec,
+                          FT_Long     face_index,
+                          FT_Face*    aface )
   {
-	FT_Error  	error = FT_Err_Ok;
-	short     	res_ref, res_index;
-	Handle    	fond;
-	FSRef		hostContainerRef;
+    FT_Error  error = FT_Err_Ok;
+    short     res_ref, res_index;
+    Handle    fond;
+    FSRef     hostContainerRef;
 
-	error = FSpMakeFSRef( spec, &hostContainerRef );
-	if ( error == noErr )
-		error = FSOpenResourceFile( &hostContainerRef, 0, NULL, fsRdPerm, &res_ref );
 
-	if ( error != noErr )
-		return FT_Err_Cannot_Open_Resource;
-		
-	UseResFile( res_ref );
+    error = FSpMakeFSRef( spec, &hostContainerRef );
+    if ( error == noErr )
+      error = FSOpenResourceFile( &hostContainerRef,
+                                  0, NULL, fsRdPerm, &res_ref );
 
-	/* face_index may be -1, in which case we
-	just need to do a sanity check */
-	if ( face_index < 0 )
-		res_index = 1;
-	else
-	{
-		res_index = (short)( face_index + 1 );
-		face_index = 0;
-	}
-	fond = Get1IndResource( 'FOND', res_index );
-	if ( ResError() )
-	{
-		error = FT_Err_Cannot_Open_Resource;
-		goto Error;
-	}
+    if ( error != noErr )
+      return FT_Err_Cannot_Open_Resource;
 
-	error = FT_New_Face_From_FOND( library, fond, face_index, aface );
+    UseResFile( res_ref );
 
-Error:
-	CloseResFile( res_ref );
-	return error;
+    /* face_index may be -1, in which case we
+       just need to do a sanity check */
+    if ( face_index < 0 )
+      res_index = 1;
+    else
+    {
+      res_index = (short)( face_index + 1 );
+      face_index = 0;
+    }
+    fond = Get1IndResource( 'FOND', res_index );
+    if ( ResError() )
+    {
+      error = FT_Err_Cannot_Open_Resource;
+      goto Error;
+    }
+
+    error = FT_New_Face_From_FOND( library, fond, face_index, aface );
+
+  Error:
+    CloseResFile( res_ref );
+    return error;
   }
 
 
@@ -740,73 +743,93 @@
     return FT_Err_Unknown_File_Format;
   }
 
+
   /* documentation in ftmac.h */
+
   FT_EXPORT_DEF( FT_Error )
-	FT_GetFile_From_Mac_Name( char* fontName, FSSpec* pathSpec, FT_Long* face_index )
-{
-    OptionBits options = kFMUseGlobalScopeOption;
-    FMFontFamilyIterator famIter;
-    OSStatus status = FMCreateFontFamilyIterator(NULL, NULL, options, &famIter);
-    FMFont the_font = NULL;
-    FMFontFamily family = NULL;
-    *face_index = 0;
-    while (status == 0 && !the_font)
-    {
-            status = FMGetNextFontFamily(&famIter, &family);
-            if (status == 0)
-            {
-            		int stat2;
-                    FMFontFamilyInstanceIterator instIter;
+  FT_GetFile_From_Mac_Name( char*     fontName,
+                            FSSpec*   pathSpec,
+                            FT_Long*  face_index )
+  {
+    OptionBits            options = kFMUseGlobalScopeOption;
 
-                    /* get the family name */
-                    Str255 famNameStr;
-                    char famName[256];
-                    FMGetFontFamilyName(family, famNameStr);
-                    CopyPascalStringToC(famNameStr, famName);
+    FMFontFamilyIterator  famIter;
+    OSStatus              status = FMCreateFontFamilyIterator( NULL, NULL,
+                                                               options,
+                                                               &famIter );
+    FMFont                the_font = NULL;
+    FMFontFamily          family   = NULL;
 
-                    /* iterate through the styles */
-                    FMCreateFontFamilyInstanceIterator(family, &instIter);
-                    *face_index = 0;
-                    stat2 = 0;
-                    while (stat2 == 0 && !the_font)
-                    {
-                            FMFontStyle style;
-                            FMFontSize size;
-                            FMFont font;
-                            stat2 = FMGetNextFontFamilyInstance(&instIter, &font, &style, &size);
-                            if (stat2 == 0 && size == 0)
-                            {
-                                    /* build up a complete face name */
-                                    char fullName[256];
-                                    strcpy( fullName, famName );
-                                    if (style & bold)
-                                            strcat( fullName, " Bold" );
-                                    if (style & italic)
-                                            strcat( fullName, " Italic" );
+
+    *face_index = 0;
+    while ( status == 0 && !the_font )
+    {
+      status = FMGetNextFontFamily( &famIter, &family );
+      if ( status == 0 )
+      {
+        int                           stat2;
+        FMFontFamilyInstanceIterator  instIter;
+        Str255                        famNameStr;
+        char                          famName[256];
+
+
+        /* get the family name */
+        FMGetFontFamilyName( family, famNameStr );
+        CopyPascalStringToC( famNameStr, famName );
+
+        /* iterate through the styles */
+        FMCreateFontFamilyInstanceIterator( family, &instIter );
+
+        *face_index = 0;
+        stat2 = 0;
+        while ( stat2 == 0 && !the_font )
+        {
+          FMFontStyle  style;
+          FMFontSize   size;
+          FMFont       font;
+
+
+          stat2 = FMGetNextFontFamilyInstance( &instIter, &font,
+                                               &style, &size );
+          if ( stat2 == 0 && size == 0 )
+          {
+            char fullName[256];
+
+
+            /* build up a complete face name */
+            strcpy( fullName, famName );
+            if ( style & bold )
+              strcat( fullName, " Bold" );
+            if ( style & italic )
+              strcat( fullName, " Italic" );
+
+            /* compare with the name we are looking for */
+            if ( strcmp( fullName, fontName ) == 0 )
+            {
+              /* found it! */
+              the_font = font;
+            }
+            else
+               ++(*face_index);
+          }
+        }
 
-                                    /* compare with the name we are looking for */
-                                    if (strcmp( fullName, fontName ) == 0 )
-                                    {
-                                            /* found it! */
-                                            the_font = font;
-                                    }
-                                    else
-                                            ++(*face_index);
-                            }
-                    }
-                    FMDisposeFontFamilyInstanceIterator(&instIter);
-            }
-    }
-    FMDisposeFontFamilyIterator(&famIter);
-    
-    if ( the_font ) {
-        FMGetFontContainer(the_font, pathSpec);
-        return FT_Err_Ok;
-	} else
-		return FT_Err_Unknown_File_Format;
- 
-}
+        FMDisposeFontFamilyInstanceIterator( &instIter );
+      }
+    }
+
+    FMDisposeFontFamilyIterator( &famIter );
+
+    if ( the_font )
+    {
+      FMGetFontContainer( the_font, pathSpec );
+      return FT_Err_Ok;
+    }
+    else
+      return FT_Err_Unknown_File_Format;
+  }
 
+
   /*************************************************************************/
   /*                                                                       */
   /* <Function>                                                            */
@@ -843,7 +866,7 @@
       return FT_New_Face_From_LWFN( library, &spec, face_index, aface );
     else if ( is_dfont( &spec ) )
       return FT_New_Face_From_dfont( library, &spec, face_index, aface );
-    else	/* let it fall through to normal loader (.ttf, .otf, etc.) */
+    else  /* let it fall through to normal loader (.ttf, .otf, etc.) */
     {
       args.flags    = ft_open_pathname;
       args.pathname = (char*)pathname;