diff --git a/ChangeLog b/ChangeLog index 4c0c43f42..643d1b3d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2003-08-18 David Turner + + * include/freetype/config/ftoption.h, devel/ftoption.h, + include/freetype/internal/ftobjs.h, include/freetype/internal/tttypes.h, + src/truetype/ttinterp.c, src/truetype/ttobjs.c, src/truetype/ttobjs.h: + + changed the name of TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING to + the simpler TT_CONFIG_OPTION_UNPATENTED_HINTING + + removed the macro TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. Instead, + the same effect can be used by setting a debug-hook with + FT_DEBUG_HOOK_UNPATENTED_HINTING globally with FT_Set_Debug_Hook() + 2003-08-06 Werner Lemberg * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c @@ -254,7 +267,7 @@ * src/winfonts/winfnt.c (FNT_Load_Glyph): Use first_char in computation of glyph_index. (FNT_Size_Set_Pixels): To find a strike, first check pixel_height - only, then try to find a better hit by comparing pixel_width also. + only, then try to find a better hit by comparing pixel_width also. Without this fix it isn't possible to access all strikes. Also compute metrics.max_advance to be in sync with other bitmap drivers. @@ -548,7 +561,7 @@ * include/freetype/ftstroke.h: This. * src/base/ftstroker.c: Renamed to... - * src/base/ftstroke.c: This. + * src/base/ftstroke.c: This. * include/freetype/config/ftheader.h (FT_STROKER_H): Updated. @@ -635,7 +648,7 @@ * include/freetype/internal/ftobjs.h (FT_Face_InternalRec), include/freetype/internal/psaux.h (T1_DecoderRec), - src/cff/cffgload.h (CFF_Builder): Remove `hint_flags' field. + src/cff/cffgload.h (CFF_Builder): Remove `hint_flags' field. Unused. * src/cff/cffgload.c (cff_builder_init): Updated. diff --git a/devel/ftoption.h b/devel/ftoption.h index f92d92890..3d806c992 100644 --- a/devel/ftoption.h +++ b/devel/ftoption.h @@ -404,27 +404,14 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* Define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING (in addition to */ + /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to */ /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented */ - /* work-around hinting system. You must define this if you want either */ - /* to force the use of the unpatented hinting system by also defining */ - /* TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING, or if you want to select */ - /* it at run time using the FT_PARAM_TAG_UNPATENTED_HINTING tag. */ + /* work-around hinting system. Note that for the moment, the algorithm */ + /* is only used when selected at runtime through the parameter tag */ + /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */ + /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally actived */ /* */ -#define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING to restrict the */ - /* TrueType bytecode interpreter to actions not protected by patents. */ - /* This enables some fonts, for example mingliu.ttc from Dynalab, to */ - /* work properly. They use hinting to make large changes to the glyph */ - /* shape, without which the glyph is unrecognisable. */ - /* For this to work you must also define */ - /* TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING. */ - /* */ -#undef TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING +#define TT_CONFIG_OPTION_UNPATENTED_HINTING /*************************************************************************/ diff --git a/include/freetype/config/ftoption.h b/include/freetype/config/ftoption.h index dbf532eff..182a26ca1 100644 --- a/include/freetype/config/ftoption.h +++ b/include/freetype/config/ftoption.h @@ -404,27 +404,14 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ - /* Define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING (in addition to */ + /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to */ /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented */ - /* work-around hinting system. You must define this if you want either */ - /* to force the use of the unpatented hinting system by also defining */ - /* TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING, or if you want to select */ - /* it at run time using the FT_PARAM_TAG_UNPATENTED_HINTING tag. */ + /* work-around hinting system. Note that for the moment, the algorithm */ + /* is only used when selected at runtime through the parameter tag */ + /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */ + /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally actived */ /* */ -#define TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING to restrict the */ - /* TrueType bytecode interpreter to actions not protected by patents. */ - /* This enables some fonts, for example mingliu.ttc from Dynalab, to */ - /* work properly. They use hinting to make large changes to the glyph */ - /* shape, without which the glyph is unrecognisable. */ - /* For this to work you must also define */ - /* TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING. */ - /* */ -#undef TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING +#define TT_CONFIG_OPTION_UNPATENTED_HINTING /*************************************************************************/ diff --git a/include/freetype/internal/ftobjs.h b/include/freetype/internal/ftobjs.h index ac3edfa06..79319e874 100644 --- a/include/freetype/internal/ftobjs.h +++ b/include/freetype/internal/ftobjs.h @@ -541,14 +541,14 @@ FT_BEGIN_HEADER FT_Done_GlyphSlot( FT_GlyphSlot slot ); /* */ - + /* * Free the bitmap of a given glyphslot when needed * (i.e., only when it was allocated with ft_glyphslot_alloc_bitmap). */ FT_BASE( void ) ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); - + /* * Allocate a new bitmap buffer in a glyph slot. @@ -673,8 +673,18 @@ FT_BEGIN_HEADER /*************************************************************************/ -#define FT_DEBUG_HOOK_TRUETYPE 0 -#define FT_DEBUG_HOOK_TYPE1 1 +/* this hook is used by the TrueType debugger. It must be set to an alternate + * truetype bytecode interpreter function + */ +#define FT_DEBUG_HOOK_TRUETYPE 0 + + +/* set this debug hook to a non-null pointer to force unpatented hinting + * for all faces when both TT_CONFIG_OPTION_BYTECODE_INTERPRETER and + * TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. this is only used + * during debugging + */ +#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1 /*************************************************************************/ diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h index cdb297294..736d90751 100644 --- a/include/freetype/internal/tttypes.h +++ b/include/freetype/internal/tttypes.h @@ -1562,7 +1562,7 @@ FT_BEGIN_HEADER /* used to hook the debugger for the `ttdebug' utility. */ TT_Interpreter interpreter; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING /* Use unpatented hinting only. */ FT_Bool unpatented_hinting; #endif diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index eb73657e9..2dca6a212 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -221,7 +221,7 @@ #undef FAILURE #define FAILURE 1 -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING #define GUESS_VECTOR( V ) \ if ( CUR.face->unpatented_hinting ) \ { \ @@ -722,7 +722,7 @@ exec->GS.freeVector = exec->GS.projVector; exec->GS.dualVector = exec->GS.projVector; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING exec->GS.both_x_axis = TRUE; #endif @@ -754,7 +754,7 @@ { 0x4000, 0 }, { 0x4000, 0 }, -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING TRUE, #endif @@ -1358,7 +1358,7 @@ { if ( !CUR.tt_metrics.ratio ) { -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING if ( CUR.face->unpatented_hinting ) { if ( CUR.GS.both_x_axis ) @@ -1558,7 +1558,7 @@ FT_F26Dot6 v; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING FT_ASSERT( !CUR.face->unpatented_hinting ); #endif @@ -2122,7 +2122,7 @@ Project( EXEC_OP_ FT_Vector* v1, FT_Vector* v2 ) { -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING FT_ASSERT( !CUR.face->unpatented_hinting ); #endif @@ -2223,7 +2223,7 @@ static void Compute_Funcs( EXEC_OP ) { -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING if ( CUR.face->unpatented_hinting ) { /* If both vectors point rightwards along the x axis, set */ @@ -2267,7 +2267,7 @@ return; } -#endif /* TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING */ +#endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING */ if ( CUR.GS.freeVector.x == 0x4000 ) CUR.F_dot_P = CUR.GS.projVector.x * 0x10000L; @@ -2618,7 +2618,7 @@ } -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING #define DO_GPV \ if ( CUR.face->unpatented_hinting ) \ { \ @@ -2637,7 +2637,7 @@ #endif -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING #define DO_GFV \ if ( CUR.face->unpatented_hinting ) \ { \ @@ -5189,7 +5189,7 @@ d = CUR_Func_project( zp.cur + p, zp.org + p ); -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING if ( CUR.face->unpatented_hinting ) { if ( CUR.GS.both_x_axis ) @@ -5224,7 +5224,7 @@ FT_F26Dot6 dy, FT_Bool touch ) { -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING if ( CUR.face->unpatented_hinting ) { if ( CUR.GS.both_x_axis ) @@ -5428,7 +5428,7 @@ return; } -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING if ( CUR.face->unpatented_hinting ) { if ( CUR.GS.both_x_axis ) @@ -6345,7 +6345,7 @@ FT_ULong C; FT_Long B; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING /* Delta hinting is covered by US Patent 5159668. */ if ( CUR.face->unpatented_hinting ) { @@ -6437,7 +6437,7 @@ FT_Long B; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING /* Delta hinting is covered by US Patent 5159668. */ if ( CUR.face->unpatented_hinting ) { diff --git a/src/truetype/ttobjs.c b/src/truetype/ttobjs.c index 25e19205a..3572c6a86 100644 --- a/src/truetype/ttobjs.c +++ b/src/truetype/ttobjs.c @@ -34,7 +34,7 @@ #include "ttinterp.h" #endif -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING #include FT_TRUETYPE_UNPATENTED_H #endif @@ -225,14 +225,12 @@ } -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING /* Determine whether unpatented hinting is to be used for this face. */ + face->unpatented_hinting = + ( library->debug_hooks[ FT_DEBUG_HOOK_UNPATENTED_HINTING ] != NULL ); -#ifdef TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING - face->unpatented_hinting = TRUE; -#else - face->unpatented_hinting = FALSE; { int i; @@ -241,9 +239,8 @@ if ( params[i].tag == FT_PARAM_TAG_UNPATENTED_HINTING ) face->unpatented_hinting = TRUE; } -#endif /* TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING */ -#endif /* TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING */ +#endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING */ /* initialize standard glyph loading routines */ TT_Init_Glyph_Loading( face ); diff --git a/src/truetype/ttobjs.h b/src/truetype/ttobjs.h index 0e63d7195..c7f556215 100644 --- a/src/truetype/ttobjs.h +++ b/src/truetype/ttobjs.h @@ -83,7 +83,7 @@ FT_BEGIN_HEADER FT_UnitVector projVector; FT_UnitVector freeVector; -#ifdef TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING +#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING FT_Bool both_x_axis; #endif