diff --git a/ChangeLog b/ChangeLog index d3fe97518..cb47d95ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,25 @@ +2004-02-23 Werner Lemberg + + * docs/CHANGES: Updated. + + * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. + +2004-02-23 Masatake YAMATO + + Provide a simple API to control FreeType's tracing levels. + + * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, + FT_Trace_Get_Name): New declarations. + + * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New + functions. + 2004-02-23 David Turner - * src/autofit/afhints.c, src/autofit/afhints.h, src/autofit/aflatin.c, - src/autofit/afloader.c, src/types.h: grave bugs were fixed. The - auto-fitter works, doesn't crashes, but still produces unexpected - results !! + * src/autofit/afhints.c, src/autofit/afhints.h, + src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave + bugs have been fixed. The auto-fitter works, doesn't crash, but + still produces unexpected results... 2004-02-21 Werner Lemberg diff --git a/docs/CHANGES b/docs/CHANGES index 86a227e0a..33534423f 100644 --- a/docs/CHANGES +++ b/docs/CHANGES @@ -6,13 +6,15 @@ LATEST CHANGES BETWEEN 2.1.8 and 2.1.7 - The native TrueType hinter contained some bugs which prevented some fonts to be rendered correctly, most notably Legendum.otf. + - The PostScript hinter now produces much improved results. + - The linear advance width and height values were incorrectly rounded, making them virtually unusable if not loaded with FT_LOAD_LINEAR_DESIGN. - Indexing CID-keyed CFF fonts is now working: The glyph index is correctly treated as a CID, similar to FreeType's CID driver - module. Note that CID CMaps support is still missing. + module. Note that CID CMap support is still missing. - The FT_FACE_FLAGS_GLYPH_NAMES is now set correctly for all font formats. @@ -32,8 +34,8 @@ LATEST CHANGES BETWEEN 2.1.8 and 2.1.7 - The flex operator didn't work for CFF fonts. - - PS glyphs which use the `hintmask' operator haven't been rendered - correctly in some cases. + - PS glyphs which use the `hintmask' operator haven't been + rendered correctly in some cases. - Metrics for BDF and PCF bitmap font formats have been fixed. @@ -57,6 +59,10 @@ LATEST CHANGES BETWEEN 2.1.8 and 2.1.7 in file-based fonts, it can happen in document-embedded resources of PostScript documents. + - A simple API is now available to control FreeType's tracing + mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file + `ftdebug.h' for more details. + - The cache sub-system has been rewritten. - There is now support for deinstallation of faces. diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h index 129c91f6a..850eb5663 100644 --- a/include/freetype/internal/ftdebug.h +++ b/include/freetype/internal/ftdebug.h @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component (specification). */ /* */ -/* Copyright 1996-2001, 2002 by */ +/* Copyright 1996-2001, 2002, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -27,6 +27,7 @@ #include #include FT_CONFIG_CONFIG_H +#include FT_FREETYPE_H FT_BEGIN_HEADER @@ -96,6 +97,53 @@ FT_BEGIN_HEADER #endif /* !FT_DEBUG_LEVEL_TRACE */ + /*************************************************************************/ + /* */ + /* */ + /* FT_Trace_Get_Count */ + /* */ + /* */ + /* Return the number of available trace components. */ + /* */ + /* */ + /* The number of trace components. 0 if FreeType 2 is not built with */ + /* FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* */ + /* This function may be useful if you want to access elements of */ + /* the internal `ft_trace_levels' array by an index. */ + /* */ + FT_EXPORT( FT_Int ) + FT_Trace_Get_Count( void ); + + + /*************************************************************************/ + /* */ + /* */ + /* FT_Trace_Get_Name */ + /* */ + /* */ + /* Return the name of a trace component. */ + /* */ + /* */ + /* The index of the trace component. */ + /* */ + /* */ + /* The name of the trace component. This is a statically allocated */ + /* C string, so do not free it after use. NULL if FreeType 2 is not */ + /* built with FT_DEBUG_LEVEL_TRACE definition. */ + /* */ + /* */ + /* Use @FT_Trace_Get_Count to get the number of available trace */ + /* components. */ + /* */ + /* This function may be useful if you want to control FreeType 2's */ + /* debug level in your appliaciton. */ + /* */ + FT_EXPORT( const char * ) + FT_Trace_Get_Name( FT_Int index ); + + /*************************************************************************/ /* */ /* You need two opening resp. closing parentheses! */ diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c index 48a214380..d8ccd8013 100644 --- a/src/base/ftdebug.c +++ b/src/base/ftdebug.c @@ -4,7 +4,7 @@ /* */ /* Debugging and logging component (body). */ /* */ -/* Copyright 1996-2001 by */ +/* Copyright 1996-2001, 2002, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -82,8 +82,9 @@ /* array of trace levels, initialized to 0 */ int ft_trace_levels[trace_count]; + /* define array of trace toggle names */ -#define FT_TRACE_DEF(x) #x , +#define FT_TRACE_DEF( x ) #x , static const char* ft_trace_toggles[trace_count + 1] = { @@ -94,19 +95,43 @@ #undef FT_TRACE_DEF + /* documentation is in ftdebug.h */ + + FT_EXPORT_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return trace_count; + } + + + /* documentation is in ftdebug.h */ + + FT_EXPORT_DEF( const char * ) + FT_Trace_Get_Name( FT_Int index ) + { + int max = FT_Trace_Get_Count(); + + + if ( index < max ) + return ft_trace_toggles[index]; + else + return NULL; + } + + /*************************************************************************/ /* */ /* 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: */ + /* 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" */ + /* export FT2_DEBUG="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, */ + /* This requests 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 for details of the */ + /* See the file for details of the */ /* available toggle names. */ /* */ /* The level must be between 0 and 6; 0 means quiet (except for serious */ @@ -117,6 +142,7 @@ { const char* ft2_debug = getenv( "FT2_DEBUG" ); + if ( ft2_debug ) { const char* p = ft2_debug; @@ -136,7 +162,7 @@ if ( *p == ':' && p > q ) { - FT_Int n, i, len = (FT_Int)(p - q); + FT_Int n, i, len = (FT_Int)( p - q ); FT_Int level = -1, found = -1; @@ -171,7 +197,7 @@ { if ( found == trace_any ) { - /* special case for "any" */ + /* special case for `any' */ for ( n = 0; n < trace_count; n++ ) ft_trace_levels[n] = level; } @@ -183,14 +209,31 @@ } } + #else /* !FT_DEBUG_LEVEL_TRACE */ + FT_BASE_DEF( void ) ft_debug_init( void ) { /* nothing */ } + + FT_EXPORT_DEF( FT_Int ) + FT_Trace_Get_Count( void ) + { + return 0; + } + + + FT_EXPORT_DEF( const char * ) + FT_Trace_Get_Name( FT_Int index ) + { + return NULL; + } + + #endif /* !FT_DEBUG_LEVEL_TRACE */