ref: c846eac112fa08a32f8d5b185734c423cd2bf47b
parent: 09370c8ce085aeeb1fa47042586b08f946601037
author: Werner Lemberg <[email protected]>
date: Thu Feb 19 16:39:58 EST 2004
* 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.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2004-02-18 Werner Lemberg <[email protected]>
+
+ * 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 <[email protected]>
Fix callback functions in cache module.
--- 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 @@
* 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 @@
/* */
-
#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 @@
/* 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. */
--- 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 ),
--- 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 );
--- 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 */
--- 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 );
--- 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;