* docs/CHANGES: Updated.
* include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H.
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.
diff --git a/ChangeLog b/ChangeLog
index d3fe975..cb47d95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,25 @@
+2004-02-23 Werner Lemberg <wl@gnu.org>
+
+ * docs/CHANGES: Updated.
+
+ * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H.
+
+2004-02-23 Masatake YAMATO <jet@gyve.org>
+
+ 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 <david@freetype.org>
- * 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 <wl@gnu.org>
diff --git a/docs/CHANGES b/docs/CHANGES
index 86a227e..3353442 100644
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -6,13 +6,15 @@
- 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 @@
- 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 @@
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 129c91f..850eb56 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 <ft2build.h>
#include FT_CONFIG_CONFIG_H
+#include FT_FREETYPE_H
FT_BEGIN_HEADER
@@ -98,6 +99,53 @@
/*************************************************************************/
/* */
+ /* <Function> */
+ /* FT_Trace_Get_Count */
+ /* */
+ /* <Description> */
+ /* Return the number of available trace components. */
+ /* */
+ /* <Return> */
+ /* The number of trace components. 0 if FreeType 2 is not built with */
+ /* FT_DEBUG_LEVEL_TRACE definition. */
+ /* */
+ /* <Note> */
+ /* 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 );
+
+
+ /*************************************************************************/
+ /* */
+ /* <Function> */
+ /* FT_Trace_Get_Name */
+ /* */
+ /* <Description> */
+ /* Return the name of a trace component. */
+ /* */
+ /* <Input> */
+ /* The index of the trace component. */
+ /* */
+ /* <Return> */
+ /* 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. */
+ /* */
+ /* <Note> */
+ /* 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! */
/* */
/* Example: FT_TRACE0(( "Value is %i", foo )) */
diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c
index 48a2143..d8ccd80 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 <freetype/internal/fttrace.h> for details of the */
+ /* See the file <include/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 */
@@ -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 */