shithub: freetype+ttf2subf

Download patch

ref: af594e606a52767f599ee33444c56bcfd2c733ba
parent: b5c7de5b37b468e9942e4936ce1c358a3c2062db
author: Werner Lemberg <[email protected]>
date: Sat Dec 22 09:38:40 EST 2001

* builds/amiga/*: Adaptations to latest changes.
Support added for MorphOS.

* src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'.
(ps_mask_table_merge, ps_hints_open, ps_hints_stem,
ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix
FT_ERROR messages.
* src/pshinter/pshalgo1.c (FT_COMPONENT): Define as
`trace_pshalgo1'.
* src/pshinter/pshalgo2.c (FT_COMPONENT): Define as
`trace_pshalgo2'.
* include/freetype/internal/ftdebug.h (FT_Trace): Updated.

* docs/modules.txt: New file.

git/fs: mount .git/fs: mount/attach disallowed
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,20 +1,37 @@
+2001-12-22  Detlef W�rkner  <[email protected]>
+
+	* builds/amiga/*: Adaptations to latest changes.
+	Support added for MorphOS.
+
+2001-12-22  Werner Lemberg  <[email protected]>
+
+	* src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'.
+	(ps_mask_table_merge, ps_hints_open, ps_hints_stem,
+	ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix
+	FT_ERROR messages.
+	* src/pshinter/pshalgo1.c (FT_COMPONENT): Define as
+	`trace_pshalgo1'.
+	* src/pshinter/pshalgo2.c (FT_COMPONENT): Define as
+	`trace_pshalgo2'.
+	* include/freetype/internal/ftdebug.h (FT_Trace): Updated.
+
+	* docs/modules.txt: New file.
+
 2001-12-21  David Turner  <[email protected]>
 
-        * src/cff/cffgload.c: added a comment regarding "cntrmask" operator
-        
-        * src/pshinter/pshrec.c: now ignores invalid "hintmask" and "cntrmask"
-        operators (instead of returning an error). Glyph 2028 of the CFF font
-        "MSung-Light-Acro" couldn't be rendered otherwise (it seems its
-        charstring is buggy, though this requires more analysis)..
+	* src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter):
+	Ignore invalid "hintmask" and "cntrmask" operators (instead of
+	returning an error).  Glyph 2028 of the CFF font "MSung-Light-Acro"
+	couldn't be rendered otherwise (it seems its charstring is buggy,
+	though this requires more analysis).
+	(FT_COMPONENT): Define.
 
-        * src/cff/cffgload.c, src/psaux/t1decode.c, src/pshinter/pshrec.c,
-        src/pshinter/ahalgo2.c, src/pshinter/pshglob.h: fixed a bug where
-        the X and Y axis where inversed in the postscript hinter. this
-        caused problem when displaying on non-square surfaces..
+	* src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c
+	(T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a
+	bug where the X and Y axis where inversed in the postscript hinter. 
+	This caused problem when displaying on non-square surfaces.
 
-        * include/freetype/cache/ftcmanag.h, include/freetype/cache/ftcimage.h,
-        include/freetype/cache/ftcsbits.h: updating documentation to better
-        explain the use of the "anode" output parameter in lookup functions
+	* src/pshinter/pshalgo2.c: s/vertical/dimension/.
 
 	* src/pshinter/pshglob.c (psh_globals_new): Replaced a floating
 	point constant with a fixed-float equivalent.  For some reasons not
@@ -23,9 +40,6 @@
 
 2001-12-20  Werner Lemberg  <[email protected]>
 
-        * src/cid/cidobjs.c (CID_Face_Done): fixed a memory leak, the subrs
-        routines were never released when CID faces were destroyed
-
 	* src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix
 	tracing strings.
 	* src/cache/ftccmap.c (ftc_cmap_family_init): Ditto.
@@ -96,6 +110,11 @@
 
 	* src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix
 	transformation of hinted glyphs.
+
+	* src/cid/cidload.c (cid_read_subrs): Fix error condition.
+
+	* src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs
+	routines were never released when CID faces were destroyed.
 
 	* src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated
 	to move the definition of encoding tables back within "cffload.c"
--- a/builds/amiga/README
+++ b/builds/amiga/README
@@ -1,3 +1,9 @@
+The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted
+on 68k-Amiga producing MorphOS-PPC-binaries from
+http://www.morphos.de). To use it, type "make assign", then "make",
+it produces a link library libft2_ppc.a.
+
+
 The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available,
 latest sold version was 6.50, updates  can be found in Aminet).  It is
 based on the version found  in the sourcecode of ttf.library 0.83b for
--- a/builds/amiga/include/freetype/config/ftconfig.h
+++ b/builds/amiga/include/freetype/config/ftconfig.h
@@ -1,7 +1,7 @@
 // TetiSoft: We must change FT_BASE_DEF and FT_EXPORT_DEF
 
-//#define FT_BASE_DEF( x )  extern  x	// SAS/C wouldn't generate an XDEF
-//#define FT_EXPORT_DEF( x )  extern  x	// SAS/C wouldn't generate an XDEF
+//#define FT_BASE_DEF( x )  extern  x   // SAS/C wouldn't generate an XDEF
+//#define FT_EXPORT_DEF( x )  extern  x // SAS/C wouldn't generate an XDEF
 #undef FT_BASE_DEF
 #define FT_BASE_DEF( x )  x
 #undef FT_EXPORT_DEF
@@ -8,4 +8,13 @@
 #define FT_EXPORT_DEF( x )  x
 
 // TetiSoft: now include original file
+#ifndef __MORPHOS__
 #include "FT:include/freetype/config/ftconfig.h"
+#else
+// We must define that, it seems that
+// lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in 
+// ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf
+// binaries from http://www.morphos.de)
+#define _LIBC_LIMITS_H_
+#include "/FT/include/freetype/config/ftconfig.h"
+#endif
--- a/builds/amiga/include/freetype/config/ftmodule.h
+++ b/builds/amiga/include/freetype/config/ftmodule.h
@@ -2,19 +2,20 @@
 // insert the following in your source file and uncomment as needed:
 
 /*
-//#define FT_USE_AUTOHINT	// autohinter
-//#define FT_USE_RASTER		// monochrome rasterizer
-//#define FT_USE_SMOOTH		// anti-aliasing rasterizer
-//#define FT_USE_TT		// truetype font driver
-//#define FT_USE_T1		// type1 font driver
-//#define FT_USE_T1CID		// cid-keyed type1 font driver	// no cmap support, useless
-//#define FT_USE_CFF		// opentype font driver		// does not work with TektonPro
-//#define FT_USE_PCF		// pcf bitmap font driver	// all tested fonts 12*12 (size unknown)
-//#define FT_USE_WINFNT		// windows .fnt|.fon bitmap font driver
+//#define FT_USE_AUTOHINT       // autohinter
+//#define FT_USE_RASTER         // monochrome rasterizer
+//#define FT_USE_SMOOTH         // anti-aliasing rasterizer
+//#define FT_USE_TT             // truetype font driver
+//#define FT_USE_T1             // type1 font driver
+//#define FT_USE_T1CID          // cid-keyed type1 font driver  // no cmap support, useless
+//#define FT_USE_CFF            // opentype font driver         // does not work with TektonPro
+//#define FT_USE_PCF            // pcf bitmap font driver
+//#define FT_USE_WINFNT         // windows .fnt|.fon bitmap font driver
 #include "FT:src/base/ftinit.c"
 */
 
-// TetiSoft: make sure that needed support modules are built in
+// TetiSoft: make sure that needed support modules are built in.
+// Dependencies can be found by searching for FT_Get_Module.
 
 #ifdef FT_USE_TT
 #define FT_USE_SFNT
@@ -22,14 +23,20 @@
 
 #ifdef FT_USE_CFF
 #define FT_USE_SFNT
+#define FT_USE_PSHINT
+#define FT_USE_PSNAMES
 #endif
 
 #ifdef FT_USE_T1
 #define FT_USE_PSAUX
+#define FT_USE_PSHINT
+#define FT_USE_PSNAMES
 #endif
 
 #ifdef FT_USE_T1CID
 #define FT_USE_PSAUX
+#define FT_USE_PSHINT
+#define FT_USE_PSNAMES
 #endif
 
 #ifdef FT_USE_PSAUX
@@ -44,6 +51,10 @@
 
 #ifdef FT_USE_AUTOHINT
 FT_USE_MODULE(autohint_module_class)
+#endif
+
+#ifdef FT_USE_PSHINT
+FT_USE_MODULE(pshinter_module_class)
 #endif
 
 #ifdef FT_USE_CFF
--- a/builds/amiga/smakefile
+++ b/builds/amiga/smakefile
@@ -33,6 +33,8 @@
 
 OBJAHINT = autohint.o ahoptim.o
 
+OBJPSHINT = pshinter.o
+
 OBJPSAUX = psaux.o
 
 OBJPSNAM = psnames.o
@@ -57,7 +59,7 @@
 
 OBJPCF = pcf.o
 
-OBJPS = $(OBJPSAUX) $(OBJPSNAM)
+OBJPS = $(OBJPSAUX) $(OBJPSNAM) $(OBJPSHINT)
 
 OBJRASTER = $(OBJRAST) $(OBJSMOOTH)
 
@@ -141,6 +143,11 @@
 ahoptim.o: $(CORE)autohint/ahoptim.c
 	sc $(SCFLAGS) objname=$@ $<
 
+#
+# freetype library PS hinting module
+#
+pshinter.o: $(CORE)pshinter/pshinter.c
+	sc $(SCFLAGS) objname=$@ $<
 #
 # freetype library PS support module
 #
--- a/builds/amiga/src/base/ftsystem.c
+++ b/builds/amiga/src/base/ftsystem.c
@@ -2,9 +2,19 @@
 // malloc() realloc() and free() which can't be used in an amiga
 // shared run-time library linked with libinit.o
 
+#ifdef __GNUC__
+// Avoid warnings "struct X declared inside parameter list"
+#include <exec/memory.h>
+#include <exec/devices.h>
+#include <exec/io.h>
+#include <exec/semaphores.h>
+#include <dos/exall.h>
+#endif
+
 #include <proto/exec.h>
 #include <proto/dos.h>
 
+#ifndef __GNUC__
 /* TetiSoft: Missing in alib_protos.h, see amiga.lib autodoc
  * (These amiga.lib functions work under AmigaOS V33 and up)
  */
@@ -24,13 +34,18 @@
                                 register __a1 APTR memory,
                                 register __d0 ULONG memSize,
                                 register __a6 struct ExecBase *SysBase);
+#endif
 
 
 // TetiSoft: C implementation of AllocVecPooled (see autodoc exec/AllocPooled)
 APTR AllocVecPooled(APTR poolHeader, ULONG memSize)
 {
-        ULONG newSize = memSize + 4;
+        ULONG newSize = memSize + sizeof(ULONG);
+#ifdef __GNUC__
+        ULONG *mem = AllocPooled(poolHeader, newSize);
+#else
         ULONG *mem = AsmAllocPooled(poolHeader, newSize, SysBase);
+#endif
 
         if (!mem)
                 return NULL;
@@ -43,7 +58,11 @@
 {
         ULONG *realmem = (ULONG *)memory - 1;
 
+#ifdef __GNUC__
+        FreePooled(poolHeader, realmem, *realmem);
+#else
         AsmFreePooled(poolHeader, realmem, *realmem, SysBase);
+#endif
 }
 
 /***************************************************************************/
@@ -215,7 +234,7 @@
   /* We use the macro STREAM_FILE for convenience to extract the       */
   /* system-specific stream handle from a given FreeType stream object */
 //#define STREAM_FILE( stream )  ( (FILE*)stream->descriptor.pointer )
-#define STREAM_FILE( stream )  ( (BPTR)stream->descriptor.pointer )        // TetiSoft
+#define STREAM_FILE( stream )  ( (BPTR)stream->descriptor.pointer )     // TetiSoft
 
 
   /*************************************************************************/
@@ -233,7 +252,7 @@
   ft_close_stream( FT_Stream  stream )
   {
 //  fclose( STREAM_FILE( stream ) );
-    Close( STREAM_FILE( stream ) );        // TetiSoft
+    Close( STREAM_FILE( stream ) );     // TetiSoft
 
     stream->descriptor.pointer = NULL;
     stream->size               = 0;
@@ -274,7 +293,7 @@
     file = STREAM_FILE( stream );
 
 //  fseek( file, offset, SEEK_SET );
-    Seek( file, offset, OFFSET_BEGINNING );        // TetiSoft
+    Seek( file, offset, OFFSET_BEGINNING );     // TetiSoft
 
 //  return (unsigned long)fread( buffer, 1, count, file );
     return (unsigned long)FRead( file, buffer, 1, count);
@@ -289,7 +308,7 @@
   {
 //  FILE*  file;
     BPTR   file;                // TetiSoft
-    struct FileInfoBlock *fib;        // TetiSoft
+    struct FileInfoBlock *fib;  // TetiSoft
 
 
     if ( !astream )
@@ -296,7 +315,7 @@
       return FT_Err_Invalid_Stream_Handle;
 
 //  file = fopen( filepathname, "rb" );
-    file = Open( filepathname, MODE_OLDFILE );        // TetiSoft
+    file = Open( filepathname, MODE_OLDFILE );  // TetiSoft
     if ( !file )
     {
       FT_ERROR(( "FT_New_Stream:" ));
@@ -346,6 +365,7 @@
   }
 
 
+
 #ifdef FT_DEBUG_MEMORY
 
   extern FT_Int
@@ -370,7 +390,11 @@
     if ( memory )
     {
 //    memory->user    = 0;
+#ifdef __GNUC__
+      memory->user    = CreatePool ( MEMF_PUBLIC, 2048, 2048 );
+#else
       memory->user    = AsmCreatePool ( MEMF_PUBLIC, 2048, 2048, SysBase );
+#endif
       if ( memory->user == NULL )
       {
         FreeVec ( memory );
@@ -400,7 +424,11 @@
     ft_mem_debug_done( memory );
 #endif  
 
+#ifdef __GNUC__
+    DeletePool( memory->user );
+#else
     AsmDeletePool( memory->user, SysBase );
+#endif
     FreeVec( memory );
   }
 
--- /dev/null
+++ b/docs/modules.txt
@@ -1,0 +1,13 @@
+This file shows the interdependencies of various FreeType modules.
+
+Note that the use of `psnames' can be controlled in ftconfig.h
+(FT_CONFIG_OPTION_POSTSCRIPT_NAMES).
+
+  module       dependency
+ ---------------------------------------
+  cff          sfnt, pshinter, psnames
+  cid          psaux, pshinter, psnames
+  truetype     sfnt
+  type1        psaux, pshinter, psnames
+  psaux        psnames
+  sfnt         psnames
--- a/include/freetype/cache/ftcimage.h
+++ b/include/freetype/cache/ftcimage.h
@@ -168,9 +168,9 @@
   /*    aglyph :: The corresponding @FT_Glyph object.  0 in case of        */
   /*              failure.                                                 */
   /*                                                                       */
-  /*    anode  :: used to return the address of of the corresponding       */
-  /*              cache node after incrementing its reference count        */
-  /*              (see note below)                                         */
+  /*    anode  :: Used to return the address of of the corresponding cache */
+  /*              node after incrementing its reference count (see note    */
+  /*              below).                                                  */
   /*                                                                       */
   /* <Return>                                                              */
   /*    FreeType error code.  0 means success.                             */
@@ -182,14 +182,14 @@
   /*                                                                       */
   /*    If "anode" is _not_ NULL, it receives the address of the cache     */
   /*    node containing the glyph image, after increasing its reference    */
-  /*    count. This ensures that the node (as well as the FT_Glyph) will   */
+  /*    count.  This ensures that the node (as well as the FT_Glyph) will  */
   /*    always be kept in the cache until you call @FTC_Node_Unref to      */
   /*    "release" it.                                                      */
   /*                                                                       */
   /*    If "anode" is NULL, the cache node is left unchanged, which means  */
   /*    that the FT_Glyph could be flushed out of the cache on the next    */
-  /*    call to one of the caching sub-system APIs. Just don't assume      */
-  /*    that it's persistent..                                             */
+  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
+  /*    is persistent!                                                     */
   /*                                                                       */
   FT_EXPORT( FT_Error )
   FTC_ImageCache_Lookup( FTC_ImageCache  cache,
--- a/include/freetype/cache/ftcmanag.h
+++ b/include/freetype/cache/ftcmanag.h
@@ -152,7 +152,7 @@
   /*                    between abstract @FTC_FaceID values and real       */
   /*                    @FT_Face objects.                                  */
   /*                                                                       */
-  /*    families     :: global table of families.                          */
+  /*    families     :: Global table of families.                          */
   /*                                                                       */
   typedef struct  FTC_ManagerRec_
   {
--- a/include/freetype/cache/ftcsbits.h
+++ b/include/freetype/cache/ftcsbits.h
@@ -164,9 +164,9 @@
   /* <Output>                                                              */
   /*    sbit   :: A handle to a small bitmap descriptor.                   */
   /*                                                                       */
-  /*    anode  :: used to return the address of of the corresponding       */
-  /*              cache node after incrementing its reference count        */
-  /*              (see note below)                                         */
+  /*    anode  :: Used to return the address of of the corresponding cache */
+  /*              node after incrementing its reference count (see note    */
+  /*              below).                                                  */
   /*                                                                       */
   /* <Return>                                                              */
   /*    FreeType error code.  0 means success.                             */
@@ -181,15 +181,14 @@
   /*    glyph bitmap.                                                      */
   /*                                                                       */
   /*    If "anode" is _not_ NULL, it receives the address of the cache     */
-  /*    node containing the bitmap, after increasing its reference         */
-  /*    count. This ensures that the node (as well as the image) will      */
-  /*    always be kept in the cache until you call @FTC_Node_Unref to      */
-  /*    "release" it.                                                      */
+  /*    node containing the bitmap, after increasing its reference count.  */
+  /*    This ensures that the node (as well as the image) will always be   */
+  /*    kept in the cache until you call @FTC_Node_Unref to "release" it.  */
   /*                                                                       */
   /*    If "anode" is NULL, the cache node is left unchanged, which means  */
   /*    that the bitmap could be flushed out of the cache on the next      */
-  /*    call to one of the caching sub-system APIs. Just don't assume      */
-  /*    that it's persistent..                                             */
+  /*    call to one of the caching sub-system APIs.  Don't assume that it  */
+  /*    is persistent!                                                     */
   /*                                                                       */
   FT_EXPORT( FT_Error )
   FTC_SBitCache_Lookup( FTC_SBitCache    cache,
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -138,7 +138,7 @@
   /* Glyph Postscript Names handling                                       */
   /*                                                                       */
   /*   By default, FreeType 2 is compiled with the `PSNames' module.  This */
-  /*   This module is in charge of converting a glyph name string into a   */
+  /*   module is in charge of converting a glyph name string into a        */
   /*   Unicode value, or return a Macintosh standard glyph name for the    */
   /*   use with the TrueType `post' table.                                 */
   /*                                                                       */
@@ -265,7 +265,7 @@
   /*   Note that the memory debugger is only activated at runtime when     */
   /*   when the _environment_ variable "FT_DEBUG_MEMORY" is also defined!  */
   /*                                                                       */
-#define  FT_DEBUG_MEMORY
+#define FT_DEBUG_MEMORY
 
 
   /*************************************************************************/
@@ -375,7 +375,7 @@
   /* By undefining this, you will only compile the code necessary to load  */
   /* TrueType glyphs without hinting.                                      */
   /*                                                                       */
-#undef  TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+#undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 
 
   /*************************************************************************/
--- a/include/freetype/internal/ftdebug.h
+++ b/include/freetype/internal/ftdebug.h
@@ -81,6 +81,11 @@
     trace_t1decode,
     trace_psobjs,
 
+    /* PostScript hinting module `pshinter' */
+    trace_pshrec,
+    trace_pshalgo1,
+    trace_pshalgo2,
+
     /* Type 2 driver components */
     trace_cffdriver,
     trace_cffgload,
--- a/src/cff/cffgload.c
+++ b/src/cff/cffgload.c
@@ -1092,9 +1092,9 @@
         case cff_op_cntrmask:
           FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" ));
   
-          /* implement vstem when needed                           */
+          /* implement vstem when needed --                        */
           /* the specification doesn't say it, but this also works */
-          /* with the 'cntrmask' operator !!                       */
+          /* with the 'cntrmask' operator                          */
           /*                                                       */
           if ( num_args > 0 )
           {
--- a/src/cid/cidobjs.c
+++ b/src/cid/cidobjs.c
@@ -201,10 +201,12 @@
       {
         FT_Int      n;
         
+
         for ( n = 0; n < cid->num_dicts; n++ )
         {
           CID_Subrs*  subr = face->subrs + n;
           
+
           if ( subr->code )
           {
             FREE( subr->code[0] );
--- a/src/pshinter/pshalgo1.c
+++ b/src/pshinter/pshalgo1.c
@@ -21,6 +21,8 @@
 #include FT_INTERNAL_DEBUG_H
 #include "pshalgo1.h"
 
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_pshalgo1
 
 #ifdef DEBUG_HINTER
   extern PSH1_Hint_Table  ps1_debug_hint_table = 0;
--- a/src/pshinter/pshalgo2.c
+++ b/src/pshinter/pshalgo2.c
@@ -21,6 +21,8 @@
 #include FT_INTERNAL_DEBUG_H
 #include "pshalgo2.h"
 
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_pshalgo2
 
 #ifdef DEBUG_HINTER
   extern PSH2_Hint_Table  ps2_debug_hint_table = 0;
--- a/src/pshinter/pshrec.c
+++ b/src/pshinter/pshrec.c
@@ -23,7 +23,8 @@
 #include "pshrec.h"
 #include "pshalgo.h"
 
-#define FT_COMPONENT   trace_ttgload
+#undef  FT_COMPONENT
+#define FT_COMPONENT  trace_pshrec
 
 #ifdef DEBUG_HINTER
   extern PS_Hints  ps_debug_hints         = 0;
@@ -479,7 +480,7 @@
       table->num_masks--;
     }
     else
-      FT_ERROR(( "%s: ignoring invalid indices (%d,%d)\n",
+      FT_ERROR(( "ps_mask_table_merge: ignoring invalid indices (%d,%d)\n",
                  index1, index2 ));
 
   Exit:
@@ -822,7 +823,7 @@
       hints->error     = FT_Err_Invalid_Argument;
       hints->hint_type = hint_type;
 
-      FT_ERROR(( "%s.init: invalid charstring type!\n", "pshrec.hints" ));
+      FT_ERROR(( "ps_hints_open: invalid charstring type!\n" ));
       break;
     }
   }
@@ -840,7 +841,7 @@
       /* limit "dimension" to 0..1 */
       if ( dimension < 0 || dimension > 1 )
       {
-        FT_ERROR(( "ps.hints.stem: invalid dimension (%d) used\n",
+        FT_ERROR(( "ps_hints_stem: invalid dimension (%d) used\n",
                    dimension ));
         dimension = ( dimension != 0 );
       }
@@ -864,7 +865,7 @@
                                              memory, NULL );
             if ( error )
             {
-              FT_ERROR(( "ps.hints.stem: could not add stem"
+              FT_ERROR(( "ps_hints_stem: could not add stem"
                          " (%d,%d) to hints table\n", stems[0], stems[1] ));
 
               hints->error = error;
@@ -875,7 +876,7 @@
         }
 
       default:
-        FT_ERROR(( "ps.hints.stem: called with invalid hint type (%d)\n",
+        FT_ERROR(( "ps_hints_stem: called with invalid hint type (%d)\n",
                    hints->hint_type ));
         break;
       }
@@ -903,7 +904,7 @@
       /* limit "dimension" to 0..1 */
       if ( dimension < 0 || dimension > 1 )
       {
-        FT_ERROR(( "ps.hints.stem: invalid dimension (%d) used\n",
+        FT_ERROR(( "ps_hints_t1stem3: invalid dimension (%d) used\n",
                    dimension ));
         dimension = ( dimension != 0 );
       }
@@ -930,7 +931,7 @@
       }
       else
       {
-        FT_ERROR(( "ps.hints.stem3: called with invalid hint type!\n" ));
+        FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type!\n" ));
         error = FT_Err_Invalid_Argument;
         goto Fail;
       }
@@ -939,7 +940,7 @@
     return;
 
   Fail:
-    FT_ERROR(( "ps.hints.stem3: could not add counter stems to table\n" ));
+    FT_ERROR(( "ps_hints_t1stem3: could not add counter stems to table\n" ));
     hints->error = error;
   }
 
@@ -1004,8 +1005,8 @@
       /* check bit count; must be equal to current total hint count */
       if ( bit_count !=  count1 + count2 )
       {
-        FT_ERROR(( "%s: called with invalid bitcount %d (instead of %d)\n",
-                   "ps.hinter.type2.hintmask",
+        FT_ERROR(( "ps_hints_t2mask: "
+                   "called with invalid bitcount %d (instead of %d)\n",
                    bit_count, count1 + count2 ));
         
         /* simply ignore the operator */
@@ -1049,8 +1050,8 @@
       /* check bit count, must be equal to current total hint count */
       if ( bit_count !=  count1 + count2 )
       {
-        FT_ERROR(( "%s: called with invalid bitcount %d (instead of %d)\n",
-                   "ps.hinter.type2.counter",
+        FT_ERROR(( "ps_hints_t2counter: "
+                   "called with invalid bitcount %d (instead of %d)\n",
                    bit_count, count1 + count2 ));
                    
         /* simply ignore the operator */