diff --git a/ChangeLog b/ChangeLog index 261567ca8..6c49c9ab6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,20 +1,37 @@ +2001-12-22 Detlef Würkner + + * builds/amiga/*: Adaptations to latest changes. + Support added for MorphOS. + +2001-12-22 Werner Lemberg + + * 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 - * 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 - * 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. @@ -97,6 +111,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" instead of making them part of a shared header (causing problems in diff --git a/builds/amiga/README b/builds/amiga/README index 8883b0aed..17c449920 100644 --- 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 diff --git a/builds/amiga/include/freetype/config/ftconfig.h b/builds/amiga/include/freetype/config/ftconfig.h index ea8871882..9c6ff45f5 100644 --- a/builds/amiga/include/freetype/config/ftconfig.h +++ b/builds/amiga/include/freetype/config/ftconfig.h @@ -1,11 +1,20 @@ // 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 #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 diff --git a/builds/amiga/include/freetype/config/ftmodule.h b/builds/amiga/include/freetype/config/ftmodule.h index 602abffa4..e93f1ce33 100644 --- 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 @@ -46,6 +53,10 @@ FT_USE_MODULE(autohint_module_class) #endif +#ifdef FT_USE_PSHINT +FT_USE_MODULE(pshinter_module_class) +#endif + #ifdef FT_USE_CFF FT_USE_MODULE(cff_driver_class) #endif diff --git a/builds/amiga/smakefile b/builds/amiga/smakefile index d3274ff6b..e3dbaf592 100644 --- a/builds/amiga/smakefile +++ b/builds/amiga/smakefile @@ -33,6 +33,8 @@ OBJDEBUG = ftdebug.o ftdebugpure.o OBJAHINT = autohint.o ahoptim.o +OBJPSHINT = pshinter.o + OBJPSAUX = psaux.o OBJPSNAM = psnames.o @@ -57,7 +59,7 @@ OBJWINFNT = winfnt.o OBJPCF = pcf.o -OBJPS = $(OBJPSAUX) $(OBJPSNAM) +OBJPS = $(OBJPSAUX) $(OBJPSNAM) $(OBJPSHINT) OBJRASTER = $(OBJRAST) $(OBJSMOOTH) @@ -142,6 +144,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 # psaux.o: $(CORE)psaux/psaux.c diff --git a/builds/amiga/src/base/ftsystem.c b/builds/amiga/src/base/ftsystem.c index 023216a3d..70fea79bb 100644 --- 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 +#include +#include +#include +#include +#endif + #include #include +#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 @@ extern VOID __asm AsmFreePooled(register __a0 APTR poolHeader, 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 @@ void FreeVecPooled(APTR poolHeader, APTR memory) { ULONG *realmem = (ULONG *)memory - 1; +#ifdef __GNUC__ + FreePooled(poolHeader, realmem, *realmem); +#else AsmFreePooled(poolHeader, realmem, *realmem, SysBase); +#endif } /***************************************************************************/ @@ -215,7 +234,7 @@ void FreeVecPooled(APTR poolHeader, APTR memory) /* 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 @@ void FreeVecPooled(APTR poolHeader, APTR memory) 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 @@ void FreeVecPooled(APTR poolHeader, APTR memory) 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,14 +308,14 @@ void FreeVecPooled(APTR poolHeader, APTR memory) { // FILE* file; BPTR file; // TetiSoft - struct FileInfoBlock *fib; // TetiSoft + struct FileInfoBlock *fib; // TetiSoft if ( !astream ) 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 @@ void FreeVecPooled(APTR poolHeader, APTR memory) } + #ifdef FT_DEBUG_MEMORY extern FT_Int @@ -370,7 +390,11 @@ void FreeVecPooled(APTR poolHeader, APTR memory) 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 @@ void FreeVecPooled(APTR poolHeader, APTR memory) ft_mem_debug_done( memory ); #endif +#ifdef __GNUC__ + DeletePool( memory->user ); +#else AsmDeletePool( memory->user, SysBase ); +#endif FreeVec( memory ); } diff --git a/docs/modules.txt b/docs/modules.txt new file mode 100644 index 000000000..74e64cdc4 --- /dev/null +++ b/docs/modules.txt @@ -0,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 diff --git a/include/freetype/cache/ftcimage.h b/include/freetype/cache/ftcimage.h index f12ee2971..e3a400906 100644 --- a/include/freetype/cache/ftcimage.h +++ b/include/freetype/cache/ftcimage.h @@ -168,9 +168,9 @@ FT_BEGIN_HEADER /* 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). */ /* */ /* */ /* FreeType error code. 0 means success. */ @@ -182,14 +182,14 @@ FT_BEGIN_HEADER /* */ /* 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, diff --git a/include/freetype/cache/ftcmanag.h b/include/freetype/cache/ftcmanag.h index 7db644cb5..da6ce6242 100644 --- a/include/freetype/cache/ftcmanag.h +++ b/include/freetype/cache/ftcmanag.h @@ -152,7 +152,7 @@ FT_BEGIN_HEADER /* between abstract @FTC_FaceID values and real */ /* @FT_Face objects. */ /* */ - /* families :: global table of families. */ + /* families :: Global table of families. */ /* */ typedef struct FTC_ManagerRec_ { diff --git a/include/freetype/cache/ftcsbits.h b/include/freetype/cache/ftcsbits.h index 181cfd242..7c774f98b 100644 --- a/include/freetype/cache/ftcsbits.h +++ b/include/freetype/cache/ftcsbits.h @@ -164,9 +164,9 @@ FT_BEGIN_HEADER /* */ /* 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). */ /* */ /* */ /* FreeType error code. 0 means success. */ @@ -181,15 +181,14 @@ FT_BEGIN_HEADER /* 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, diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h index baf2fe578..f017fb218 100644 --- a/include/freetype/config/ftoption.h +++ b/include/freetype/config/ftoption.h @@ -138,7 +138,7 @@ FT_BEGIN_HEADER /* 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 @@ FT_BEGIN_HEADER /* 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 @@ FT_BEGIN_HEADER /* 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 /*************************************************************************/ diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h index f8765801c..e18acbba6 100644 --- a/include/freetype/internal/ftdebug.h +++ b/include/freetype/internal/ftdebug.h @@ -81,6 +81,11 @@ FT_BEGIN_HEADER trace_t1decode, trace_psobjs, + /* PostScript hinting module `pshinter' */ + trace_pshrec, + trace_pshalgo1, + trace_pshalgo2, + /* Type 2 driver components */ trace_cffdriver, trace_cffgload, diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index d4de39737..ab907955d 100644 --- 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 ) { diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c index 2d1e6b302..c42d0e881 100644 --- 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] ); diff --git a/src/pshinter/pshalgo1.c b/src/pshinter/pshalgo1.c index 010ac5781..b8e8e1f4d 100644 --- 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; diff --git a/src/pshinter/pshalgo2.c b/src/pshinter/pshalgo2.c index a10da1b74..00778e295 100644 --- 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; diff --git a/src/pshinter/pshrec.c b/src/pshinter/pshrec.c index f03e36301..783950522 100644 --- 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 */