forked from minhngoc25a/freetype2
* include/freetype/internal/ftdebug.h (FT_Trace): Remove comma in
enum to avoid compiler warnings.
This commit is contained in:
parent
222cec8c20
commit
af8df8503f
59
ChangeLog
59
ChangeLog
|
@ -1,39 +1,56 @@
|
|||
2002-02-22 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* include/freetype/internal/ftdebug.h (FT_Trace): Remove comma in
|
||||
enum to avoid compiler warnings.
|
||||
|
||||
2002-02-21 David Turner <david@freetype.org>
|
||||
|
||||
* include/freetype/internal/ftdebug.h, src/base/ftdebug.c: modified
|
||||
the debug sub-system initialization. trace levels can now be specified
|
||||
within the "FT2_DEBUG" environment variable. See the comments within
|
||||
"ftdebug.c" for more details
|
||||
Modified the debug sub-system initialization. Trace levels can now
|
||||
be specified within the "FT2_DEBUG" environment variable. See the
|
||||
comments within "ftdebug.c" for more details.
|
||||
|
||||
* include/freetype/internal/fttrace.h: new file to define the trace
|
||||
levels used for debugging. it is used both to define enums and
|
||||
toggle names for FT2_DEBUG
|
||||
* src/base/ftdebug.c: (FT_SetTraceLevel): Removed.
|
||||
(ft_debug_init): New function.
|
||||
(ft_debug_dummy): Removed.
|
||||
Updated to changes in ftdebug.h
|
||||
|
||||
* include/freetype/internal/ftdebug.h: Always define
|
||||
FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE is defined.
|
||||
(FT_Assert): Renamed to ...
|
||||
(FT_ASSERT): This.
|
||||
Some stuff from ftdebug.h has been moved to ...
|
||||
|
||||
* src/base/ftobjs.c, src/base/ftstream.c: FT_Assert renamed to
|
||||
FT_ASSERT
|
||||
* include/freetype/internal/fttrace.h: This new file to define the
|
||||
trace levels used for debugging. It is used both to define enums
|
||||
and toggle names for FT2_DEBUG.
|
||||
* include/freetype/internal/internal.h: Updated.
|
||||
|
||||
* include/freetype/internal/ftextend.h, src/base/ftextend.c,
|
||||
src/base/Jamfile, src/base/rules.mk: removing "ftextend" from the
|
||||
library, since it is now completely obsolete..
|
||||
* src/base/ftobjs.c, src/base/ftstream.c: Updated.
|
||||
|
||||
* include/freetype/fterrors.h: adding "#undef FT_ERR_CAT" to avoid
|
||||
warnings with certain compilers (like LCC)
|
||||
* include/freetype/internal/ftextend.h, src/base/ftextend.c:
|
||||
Removed. Both files are now completely obsolete.
|
||||
* src/base/Jamfile, src/base/rules.mk: Updated.
|
||||
|
||||
* src/pshinter/pshalgo2.c: renaming 'print_zone' to 'psh2_print_zone'
|
||||
to avoid errors during compilation of debug library
|
||||
* include/freetype/fterrors.h: Adding "#undef FT_ERR_CAT" and
|
||||
`#undef FT_ERR_XCAT" to avoid warnings with certain compilers (like
|
||||
LCC).
|
||||
|
||||
* src/pshinter/pshalgo2.c (print_zone): Renamed to ...
|
||||
(psh2_print_zone): This to avoid errors during compilation of debug
|
||||
library.
|
||||
|
||||
* src/smooth/ftgrays.c (FT_COMPONENT): Change definition to as
|
||||
`trace_smooth'.
|
||||
|
||||
2002-02-20 David Turner <david@freetype.org>
|
||||
|
||||
* README: adding "devel@freetype.org" address for bug reports..
|
||||
|
||||
* README: Adding "devel@freetype.org" address for bug reports.
|
||||
|
||||
2002-02-20 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* builds/unix/install.mk (check): New dummy target.
|
||||
(.PHONY): Add it.
|
||||
|
||||
|
||||
2002-02-19 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
* builds/freetype.mk (FT_CFLAGS): Use $(INCLUDE_FLAGS) first.
|
||||
|
@ -154,7 +171,7 @@
|
|||
2002-02-06 Detlef Würkner <TetiSoft@apg.lahn.de>
|
||||
|
||||
* src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak.
|
||||
|
||||
|
||||
* src/pcf/pcfread.c (pcf_load_font): Now handles the "AVERAGE_WIDTH"
|
||||
property to return correct character pixel (width/height) pairs for
|
||||
embedded bitmaps.
|
||||
|
@ -454,7 +471,7 @@
|
|||
|
||||
* 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.
|
||||
bug where the X and Y axis where inversed in the postscript hinter.
|
||||
This caused problem when displaying on non-square surfaces.
|
||||
|
||||
* src/pshinter/pshalgo2.c: s/vertical/dimension/.
|
||||
|
|
9
README
9
README
|
@ -24,14 +24,13 @@
|
|||
ftp://ftp.freetype.org/pub/freetype2/ftdoc208.zip
|
||||
|
||||
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
Please report bugs by e-mail to 'devel@freetype.org'. Don't forget
|
||||
to join a detailed explanation of what's wrong, there is nothing
|
||||
worse than receiving a terse message that says "it doesn't work"
|
||||
for us :o)
|
||||
Please report bugs by e-mail to `devel@freetype.org'. Don't
|
||||
forget to send a detailed explanation of the problem -- there is
|
||||
nothing worse than receiving a terse message that only says "it
|
||||
doesn't work".
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -196,11 +196,6 @@
|
|||
"invalid argument" )
|
||||
FT_ERRORDEF_( Unimplemented_Feature, 0x07, \
|
||||
"unimplemented feature" )
|
||||
FT_ERRORDEF_( Invalid_Table, 0x08, \
|
||||
"broken table" )
|
||||
FT_ERRORDEF_( Invalid_Offset, 0x09, \
|
||||
"broken offset within table" )
|
||||
|
||||
|
||||
/* glyph/character errors */
|
||||
|
||||
|
|
|
@ -28,11 +28,11 @@ FT_BEGIN_HEADER
|
|||
|
||||
|
||||
/* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
|
||||
/* is already defined.. this simplifies the following #ifdefs.. */
|
||||
/* is already defined; this simplifies the following #ifdefs */
|
||||
/* */
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
# undef FT_DEBUG_LEVEL_ERROR
|
||||
# define FT_DEBUG_LEVEL_ERROR
|
||||
#undef FT_DEBUG_LEVEL_ERROR
|
||||
#define FT_DEBUG_LEVEL_ERROR
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -45,26 +45,25 @@ FT_BEGIN_HEADER
|
|||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
# define FT_TRACE_DEF(x) trace_ ## x ,
|
||||
#define FT_TRACE_DEF( x ) trace_ ## x ,
|
||||
|
||||
/* defining the enums */
|
||||
/* defining the enums */
|
||||
typedef enum
|
||||
{
|
||||
# include FT_INTERNAL_TRACE_H
|
||||
trace_count,
|
||||
#include FT_INTERNAL_TRACE_H
|
||||
trace_count
|
||||
|
||||
} FT_Trace;
|
||||
|
||||
|
||||
/* defining the array of trace levels, provided by 'src/base/ftdebug.c' */
|
||||
extern int ft_trace_levels [ trace_count ];
|
||||
/* defining the array of trace levels, provided by `src/base/ftdebug.c' */
|
||||
extern int ft_trace_levels[trace_count];
|
||||
|
||||
# undef FT_TRACE_DEF
|
||||
#undef FT_TRACE_DEF
|
||||
|
||||
#endif /* FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define the FT_TRACE macro */
|
||||
|
@ -78,7 +77,7 @@ FT_BEGIN_HEADER
|
|||
|
||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
# define FT_TRACE( level, varformat ) \
|
||||
#define FT_TRACE( level, varformat ) \
|
||||
do \
|
||||
{ \
|
||||
if ( ft_trace_levels[FT_COMPONENT] >= level ) \
|
||||
|
@ -87,10 +86,11 @@ FT_BEGIN_HEADER
|
|||
|
||||
#else /* !FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
# define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */
|
||||
#define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */
|
||||
|
||||
#endif /* !FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* You need two opening resp. closing parentheses! */
|
||||
|
@ -109,7 +109,6 @@ FT_BEGIN_HEADER
|
|||
#define FT_TRACE7( varformat ) FT_TRACE( 7, varformat )
|
||||
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define the FT_ERROR macro */
|
||||
|
@ -118,11 +117,11 @@ FT_BEGIN_HEADER
|
|||
|
||||
#ifdef FT_DEBUG_LEVEL_ERROR
|
||||
|
||||
# define FT_ERROR( varformat ) FT_Message varformat
|
||||
#define FT_ERROR( varformat ) FT_Message varformat
|
||||
|
||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
# define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */
|
||||
#define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */
|
||||
|
||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
|
@ -145,7 +144,7 @@ FT_BEGIN_HEADER
|
|||
|
||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
# define FT_ASSERT( condition ) do ; while ( 0 )
|
||||
#define FT_ASSERT( condition ) do ; while ( 0 )
|
||||
|
||||
#endif /* !FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
|
@ -171,7 +170,6 @@ FT_BEGIN_HEADER
|
|||
#endif /* FT_DEBUG_LEVEL_ERROR */
|
||||
|
||||
|
||||
|
||||
FT_BASE( void ) ft_debug_init( void );
|
||||
|
||||
|
||||
|
|
|
@ -445,171 +445,6 @@ FT_BEGIN_HEADER
|
|||
FT_GlyphLoader* source );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/**** V A L I D A T O R ****/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
typedef struct FT_ValidatorRec_* FT_Validator;
|
||||
|
||||
/*********************************************************************
|
||||
*
|
||||
* there are three distinct validation levels here:
|
||||
*
|
||||
* DEFAULT ::
|
||||
* used to perform normal checks. A table validated with this setting
|
||||
* is sufficiently correct to be used reliably by FreeType
|
||||
*
|
||||
* TIGHT ::
|
||||
* this is more strict than default. A table validated with this setting
|
||||
* is sufficiently correct to be used reliablity by FreeType and to not
|
||||
* contain invalid data (that will not crash FreeType or produce bogus
|
||||
* warnings). This is used to spot font converter/generation tool
|
||||
* bugs..
|
||||
*
|
||||
* for example, a CharMap table could map a given character code to
|
||||
* a glyph index that is larger than the number of available glyphs
|
||||
* in the font. Such a table would not pass the "TIGHT" validation
|
||||
* even though it can be used safely with FreeType (which will later
|
||||
* report errors when trying to load the glyph, for example..)
|
||||
*
|
||||
*
|
||||
* PARANOID ::
|
||||
* in this mode, everything is checked to the maximum, and according
|
||||
* to the specification(s) defining the tables being checked. Really
|
||||
* useful for font fascists and to spot really weird font artefacts.
|
||||
*
|
||||
* Beware that most fonts will simply not pass this validation level
|
||||
* though !!
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
FT_VALIDATE_DEFAULT = 0,
|
||||
FT_VALIDATE_TIGHT,
|
||||
FT_VALIDATE_PARANOID
|
||||
|
||||
} FT_ValidationLevel;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* to use it, you need something like:
|
||||
*
|
||||
* valid->error = 0;
|
||||
*
|
||||
* if ( setjmp( valid->jump_buffer ) == 0 )
|
||||
* validate_table( table_data, .... );
|
||||
*
|
||||
* return valid->error;
|
||||
*
|
||||
*/
|
||||
typedef struct FT_ValidatorRec_
|
||||
{
|
||||
FT_Byte* base; /* address of table in memory */
|
||||
FT_Byte* limit; /* base + size of table in bytes */
|
||||
|
||||
FT_Error error; /* error code. 0 in case of success */
|
||||
FT_ValidationLevel level; /* validation level.. */
|
||||
FT_UInt num_glyphs; /* if level >= FT_VALIDATE_TIGHT only */
|
||||
|
||||
jmp_buf jump_buffer;
|
||||
|
||||
} FT_ValidatorRec;
|
||||
|
||||
|
||||
/* call this function when an error is detected during validation. this */
|
||||
/* will set the error and call 'longjmp' to return to the top-level */
|
||||
/* caller of the validation routine.. */
|
||||
/* */
|
||||
FT_BASE( void )
|
||||
ft_validator_error( FT_Validator valid,
|
||||
FT_Error error );
|
||||
|
||||
/* this macro assumes that the local variable 'valid' points to the */
|
||||
/* current validator structure.. */
|
||||
#define FT_INVALID(e) ft_validator_error( valid, e )
|
||||
|
||||
/* a few "common" errors in font tables */
|
||||
#define FT_INVALID_TOO_SHORT FT_INVALID( FT_Err_Invalid_Table )
|
||||
#define FT_INVALID_OFFSET FT_INVALID( FT_Err_Invalid_Offset )
|
||||
#define FT_INVALID_GLYPH_ID FT_INVALID( FT_Err_Invalid_Table )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/**** C H A R M A P S ****/
|
||||
/**** ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/* handle to internal charmap object */
|
||||
typedef struct FT_CMapRec_* FT_CMap;
|
||||
|
||||
/* handle to charmap class structure */
|
||||
typedef const struct FT_CMap_ClassRec_* FT_CMap_Class;
|
||||
|
||||
|
||||
/* internal charmap object structure, sub-class of 'FT_CharMapRec' */
|
||||
typedef struct FT_CMapRec_
|
||||
{
|
||||
FT_CharMapRec charmap;
|
||||
FT_CMap_Class clazz;
|
||||
FT_Pointer data; /* passed to validate/index/next methods */
|
||||
|
||||
} FT_CMapRec;
|
||||
|
||||
/* useful macros */
|
||||
#define FT_CMAP(x) ((FT_CMap)(x))
|
||||
#define FT_CMAP_FACE(x) (FT_CMAP(x)->charmap.face)
|
||||
#define FT_CMAP_PLATFORM_ID(x) (FT_CMAP(x)->charmap.platform_id)
|
||||
#define FT_CMAP_ENCODING_ID(x) (FT_CMAP(x)->charmap.encoding_id)
|
||||
#define FT_CMAP_ENCODING(x) (FT_CMAP(x)->charmap.encoding)
|
||||
|
||||
|
||||
/* charmap initializer */
|
||||
typedef FT_Error (*FT_CMap_InitFunc)( FT_CMap cmap );
|
||||
|
||||
/* charmap finalizer */
|
||||
typedef void (*FT_CMap_DoneFunc)( FT_CMap cmap );
|
||||
|
||||
/* charmap validation routine */
|
||||
typedef FT_Error (*FT_CMap_ValidateFunc)( FT_Pointer cmap_data,
|
||||
FT_Validator valid );
|
||||
|
||||
/* charmap charcode to glyph index mapping function */
|
||||
typedef FT_UInt (*FT_CMap_CharIndexFunc)( FT_Pointer cmap_data,
|
||||
FT_ULong char_code );
|
||||
|
||||
/* charmap charcode increment function */
|
||||
typedef FT_ULong (*FT_CMap_CharNextFunc)( FT_Pointer cmap_data,
|
||||
FT_ULong char_code,
|
||||
FT_UInt *agindex );
|
||||
|
||||
/* charmap class */
|
||||
typedef struct FT_CMap_ClassRec_
|
||||
{
|
||||
FT_ULong size; /* size in bytes */
|
||||
FT_CMap_InitFunc init;
|
||||
FT_CMap_DoneFunc done;
|
||||
FT_CMap_ValidateFunc validate;
|
||||
FT_CMap_CharIndexFunc char_index;
|
||||
FT_CMap_CharNextFunc char_next;
|
||||
|
||||
} FT_CMap_ClassRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
|
|
@ -85,12 +85,12 @@
|
|||
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||
|
||||
/* array of trace levels, initialized to 0 */
|
||||
int ft_trace_levels[ trace_count ];
|
||||
int ft_trace_levels[trace_count];
|
||||
|
||||
/* define array of trace toggle names */
|
||||
#define FT_TRACE_DEF(x) #x ,
|
||||
/* define array of trace toggle names */
|
||||
#define FT_TRACE_DEF(x) #x ,
|
||||
|
||||
static const char* ft_trace_toggles[ trace_count+1 ] =
|
||||
static const char* ft_trace_toggles[trace_count + 1] =
|
||||
{
|
||||
#include FT_INTERNAL_TRACE_H
|
||||
NULL
|
||||
|
@ -99,25 +99,24 @@
|
|||
#undef FT_TRACE_DEF
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* initialize the tracing sub-system, this is done by retrieving the
|
||||
* value of the "FT2_DEBUG" environment variable. It must be a list of
|
||||
* toggles, separated by spaces, ';' or ':' for example:
|
||||
*
|
||||
* "any=3 memory=6 stream=5"
|
||||
*
|
||||
* will request that all levels be set to 3, except the trace level for
|
||||
* the memory and stream components which are respectively set to 6 and 5
|
||||
*
|
||||
* see the file <freetype/internal/fttrace.h> for details of the available
|
||||
* toggle names.
|
||||
*
|
||||
* the level is between 0 and 6, where 0 is quiet (except in important
|
||||
* runtime errors), and 6 is _very_ verbose
|
||||
*/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Initialize the tracing sub-system. This is done by retrieving the */
|
||||
/* value of the "FT2_DEBUG" environment variable. It must be a list of */
|
||||
/* toggles, separated by spaces, `;' or `:'. Example: */
|
||||
/* */
|
||||
/* "any=3 memory=6 stream=5" */
|
||||
/* */
|
||||
/* This will request that all levels be set to 3, except the trace level */
|
||||
/* for the memory and stream components which are set to 6 and 5, */
|
||||
/* respectively. */
|
||||
/* */
|
||||
/* See the file <freetype/internal/fttrace.h> for details of the */
|
||||
/* available toggle names. */
|
||||
/* */
|
||||
/* The level must be between 0 and 6; 0 means quiet (except for serious */
|
||||
/* runtime errors), and 6 means _very_ verbose. */
|
||||
/* */
|
||||
FT_BASE_DEF( void )
|
||||
ft_debug_init( void )
|
||||
{
|
||||
|
@ -128,6 +127,7 @@
|
|||
const char* p = ft2_debug;
|
||||
const char* q;
|
||||
|
||||
|
||||
for ( ; *p; p++ )
|
||||
{
|
||||
/* skip leading whitespace and separators */
|
||||
|
@ -144,10 +144,12 @@
|
|||
int n, i, len = p - q;
|
||||
int level = -1, found = -1;
|
||||
|
||||
|
||||
for ( n = 0; n < trace_count; n++ )
|
||||
{
|
||||
const char* toggle = ft_trace_toggles[n];
|
||||
|
||||
|
||||
for ( i = 0; i < len; i++ )
|
||||
{
|
||||
if ( toggle[i] != q[i] )
|
||||
|
@ -179,7 +181,7 @@
|
|||
ft_trace_levels[n] = level;
|
||||
}
|
||||
else
|
||||
ft_trace_levels[ found ] = level;
|
||||
ft_trace_levels[found] = level;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue