diff --git a/ChangeLog b/ChangeLog index 3ece1c799..b88d4865b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2004-02-18 Werner Lemberg + + * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. + + * src/base/ftglyph.c (ft_bitmap_glyph_class, + ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. + + * src/smooth/ftsmooth.c (ft_smooth_render): Handle + FT_RENDER_MODE_LIGHT. + 2004-02-17 Werner Lemberg Fix callback functions in cache module. diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index ff7d98792..02195b26b 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -4,7 +4,7 @@ /* */ /* FreeType high-level API and common types (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -2254,6 +2254,21 @@ FT_BEGIN_HEADER * outlines. This doesn't prevent native format-specific hinters from * being used. This can be important for certain fonts where unhinted * output is better than auto-hinted one. + * + * FT_LOAD_TARGET_NORMAL :: + * Use hinting for @FT_RENDER_MODE_NORMAL. + * + * FT_LOAD_TARGET_LIGHT :: + * Use hinting for @FT_RENDER_MODE_LIGHT. + * + * FT_LOAD_TARGET_MONO :: + * Use hinting for @FT_RENDER_MODE_MONO. + * + * FT_LOAD_TARGET_LCD :: + * Use hinting for @FT_RENDER_MODE_LCD. + * + * FT_LOAD_TARGET_LCD_V :: + * Use hinting for @FT_RENDER_MODE_LCD_V. */ #define FT_LOAD_DEFAULT 0x0 #define FT_LOAD_NO_SCALE 0x1 @@ -2276,36 +2291,9 @@ FT_BEGIN_HEADER /* */ - #define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) #define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) - - /*************************************************************************** - * - * @enum: - * FT_LOAD_TARGET_XXX - * - * @description: - * A list of load targets. XXX - * - * @values: - * FT_LOAD_TARGET_NORMAL :: - * XXX - * - * FT_LOAD_TARGET_LIGHT :: - * XXX - * - * FT_LOAD_TARGET_MONO :: - * XXX - * - * FT_LOAD_TARGET_LCD :: - * XXX - * - * FT_LOAD_TARGET_LCD_V :: - * XXX - */ - #define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) #define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) #define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) @@ -2367,11 +2355,14 @@ FT_BEGIN_HEADER /* anti-aliased bitmaps, using 256 levels of opacity. */ /* */ /* FT_RENDER_MODE_LIGHT :: */ - /* This is similar to @FT_RENDER_MODE_NORMAL, except that this */ - /* changes the hinting to prevent stem width quantization. This */ - /* results in glyph shapes that are more similar to the original, */ - /* while being a bit more fuzzy ("better shapes", instead of */ - /* "better contrast" if you want :-). */ + /* This is similar to @FT_RENDER_MODE_NORMAL -- you have to use */ + /* @FT_LOAD_TARGET_LIGHT in calls to @FT_Load_Glyph to get any */ + /* effect since the rendering process no longer influences the */ + /* positioning of glyph outlines. */ + /* */ + /* The resulting glyph shapes are more similar to the original, */ + /* while being a bit more fuzzy (`better shapes' instead of `better */ + /* contrast', so to say. */ /* */ /* FT_RENDER_MODE_MONO :: */ /* This mode corresponds to 1-bit bitmaps. */ diff --git a/src/base/ftglyph.c b/src/base/ftglyph.c index e6311b53f..c6c458cc1 100644 --- a/src/base/ftglyph.c +++ b/src/base/ftglyph.c @@ -206,6 +206,7 @@ } + FT_CALLBACK_TABLE_DEF const FT_Glyph_Class ft_bitmap_glyph_class = { sizeof( FT_BitmapGlyphRec ), @@ -324,6 +325,7 @@ } + FT_CALLBACK_TABLE_DEF const FT_Glyph_Class ft_outline_glyph_class = { sizeof( FT_OutlineGlyphRec ), diff --git a/src/cff/cffgload.c b/src/cff/cffgload.c index 9aee31215..f8d611030 100644 --- a/src/cff/cffgload.c +++ b/src/cff/cffgload.c @@ -2331,7 +2331,7 @@ glyph_index = cff->charset.cids[glyph_index]; cff_decoder_init( &decoder, face, size, glyph, hinting, - FT_LOAD_TARGET_MODE(load_flags) ); + FT_LOAD_TARGET_MODE( load_flags ) ); decoder.builder.no_recurse = (FT_Bool)( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); diff --git a/src/cid/cidgload.c b/src/cid/cidgload.c index 4c21097e4..3717eeb9e 100644 --- a/src/cid/cidgload.c +++ b/src/cid/cidgload.c @@ -306,7 +306,7 @@ 0, /* glyph names -- XXX */ 0, /* blend == 0 */ hinting, - FT_LOAD_TARGET_MODE(load_flags), + FT_LOAD_TARGET_MODE( load_flags ), cid_load_glyph ); /* set up the decoder */ diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c index 40d5f504f..af8783e29 100644 --- a/src/smooth/ftsmooth.c +++ b/src/smooth/ftsmooth.c @@ -4,7 +4,7 @@ /* */ /* Anti-aliasing renderer interface (body). */ /* */ -/* Copyright 2000-2001, 2002, 2003 by */ +/* Copyright 2000-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -236,6 +236,9 @@ FT_Render_Mode mode, FT_Vector* origin ) { + if ( mode == FT_RENDER_MODE_LIGHT ) + mode = FT_RENDER_MODE_NORMAL; + return ft_smooth_render_generic( render, slot, mode, origin, FT_RENDER_MODE_NORMAL, 0, 0 ); diff --git a/src/type1/t1gload.c b/src/type1/t1gload.c index c8d1db79f..98f8194b9 100644 --- a/src/type1/t1gload.c +++ b/src/type1/t1gload.c @@ -4,7 +4,7 @@ /* */ /* Type 1 Glyph Loader (body). */ /* */ -/* Copyright 1996-2001, 2002, 2003 by */ +/* Copyright 1996-2001, 2002, 2003, 2004 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -255,7 +255,7 @@ (FT_Byte**)type1->glyph_names, face->blend, FT_BOOL( hinting ), - FT_LOAD_TARGET_MODE(load_flags), + FT_LOAD_TARGET_MODE( load_flags ), T1_Parse_Glyph ); if ( error ) goto Exit;