ref: 110246c64149e8df09b0101c5b0a2d61117a5b18
parent: e3d6e94853c8ffddb9b0c0e21395cd11568d6704
author: Werner Lemberg <[email protected]>
date: Tue Sep 26 17:55:44 EDT 2006
formatting
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,21 +1,28 @@
2006-09-26 David Turner <[email protected]>
- * src/autofit/aftypes.h, src/autofit/afhints.h,
- src/autofit/afmodule.c: adding support for disabling
- horizontal and vertical hinting for the purpose of debugging
- the auto-fitter
+ * src/autofit/afhints.h (AF_HINTS_DO_HORIZONTAL,
+ AF_HINTS_DO_VERTICAL, AF_HINTS_DO_ADVANCE): New macros to disable
+ horizontal and vertical hinting for the purpose of debugging the
+ auto-fitter.
- * include/freetype/config/ftoption.h, devel/ftoption.h:
- introducing the new FT_CONFIG_OPTION_SUBPIXEL_RENDERING to
- control wether we want to compile LCD-optimized rendering code
- (à la ClearType) or not. The macro *must* be disabled in default
- builds of the library for patent reasons.
+ * src/autofit/afmodule.c (_af_debug_disable_horz_hints,
+ _af_debug_disable_vert_hints) [AF_DEBUG]: New global variables.
- * src/smooth/ftsmooth.c: disabling LCD-specific rendering when
- FT_CONFIG_OPTION_SUBPIXEL_RENDERING isn't defined at compile
- time. This only changes the content of the rendered glyph to
- match the one of normal gray-level rendering, hence clients
- should not need to be modified.
+ * src/autofit/aftypes.h [AF_DEBUG]: Declare above variables.
+
+ * include/freetype/config/ftoption.h, devel/ftoption.h
+ (FT_CONFIG_OPTION_SUBPIXEL_RENDERING): New macro to control whether
+ we want to compile LCD-optimized rendering code (à la ClearType) or
+ not. The macro *must* be disabled in default builds of the library
+ for patent reasons.
+
+ * src/smooth/ftsmooth.c (ft_smooth_render_generic): Disable
+ LCD-specific rendering when FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+ isn't defined at compile time. This only changes the content of the
+ rendered glyph to match the one of normal gray-level rendering,
+ hence clients should not need to be modified.
+
+ * docs/CHANGES: Updated.
2006-09-18 Garrick Meeker <[email protected]>
--- a/devel/ftoption.h
+++ b/devel/ftoption.h
@@ -77,7 +77,7 @@
/*************************************************************************/
/* */
- /* uncomment the line below if you want to active sub-pixel rendering */
+ /* Uncomment the line below if you want to active sub-pixel rendering */
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
/* */
/* Note that this feature is covered by several Microsoft patents */
@@ -84,12 +84,12 @@
/* and should not be activated in any default build of the library. */
/* */
/* This macro has no impact on the FreeType API, only on its */
- /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
- /* FT_Render_Glyph will still generate a bitmap that is 3 times */
- /* larger than the original size, The difference will be that each */
- /* triplet of subpixels will have R=G=B. */
+ /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
+ /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */
+ /* the original size; the difference will be that each triplet of */
+ /* subpixels has R=G=B. */
/* */
- /* This is done to allow FreeType clients to run unmodified, forcing */
+ /* This is done to allow FreeType clients to run unmodified, forcing */
/* them to display normal gray-level anti-aliased glyphs. */
/* */
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
--- a/docs/CHANGES
+++ b/docs/CHANGES
@@ -2,66 +2,72 @@
I. IMPORTANT BUG FIXES
- - The PCF font loarder has been seriously hardened against malformed
- font files.
+ - The PCF font loader is now much more robust while loading
+ malformed font files.
- - various memory leaks have been found and squashed
+ - Various memory leaks have been found and fixed.
+
II. IMPORTANT CHANGES
- - the unpatented hinter is now part of the default build of the
- library, and we added code to automatically support "tricky"
+ - The unpatented hinter is now part of the default build of the
+ library; we have added code to automatically support `tricky'
fonts that need it.
- what this means is that FreeType should "just work" with certain
- Asian fonts, like MingLiU, which cannot properly load without a
- bytecode interpreter, but fortunately do not use any of the
- patented bytecode opcodes. We detect these fonts by name, so
- report any font file that doesn't seem to work with this,
- and we'll do what we can to support it in a next release.
+ This means that FreeType should `just work' with certain Asian
+ fonts, like MingLiU, which cannot properly be loaded without a
+ bytecode interpreter, but which fortunately do not use any of
+ the patented bytecode opcodes. We detect these fonts by name,
+ so please report any font file that doesn't seem to work with
+ FreeType, and we shall do what we can to support it in a next
+ release.
- Note that the API didn't change, so you can still force
- unpatented hinting with a special parameter to FT_Open_Face
- as well. This might be useful, for example, a PDF reader
- might present a user option to activate it to deal with certain
- "tricky" embedded fonts which cannot be clearly identified.
+ Note that the API hasn't changed, so you can still force
+ unpatented hinting with a special parameter to FT_Open_Face as
+ well. This might be useful in same cases; for example, a PDF
+ reader might present a user option to activate it to deal with
+ certain `tricky' embedded fonts which cannot be clearly
+ identified.
- if you're an embedded systems developer, you might want to
- *disable* the feature to save code space by undefining
+ If you are a developer for embedded systems, you might want to
+ *disable* the feature to save code space by undefining
TT_CONFIG_OPTION_UNPATENTED_HINTING in ftoption.h.
- - LCD-optimized rendering is now DISABLED in all default builds
- of the library, mainly due to PATENTS. For more information
+ - LCD-optimized rendering is now DISABLED in all default builds of
+ the library, mainly due to PATENT issues. For more information
see:
http://lists.gnu.org/archive/html/freetype/2006-09/msg00064.html
- a new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING has
- been introduced in ftoption.h; manually define it in this file
- if you want to re-enable the feature.
+ A new configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+ has been introduced in ftoption.h; manually define it in this
+ file if you want to re-enable the feature.
- the change only affects the implementation, not the FreeType API.
- This means that clients don't need to be modified, because the
- library still generates LCD decimated bitmaps, but with the added
- constraint that R=G=B on each triplet.
+ The change only affects the implementation, not the FreeType
+ API. This means that clients don't need to be modified, because
+ the library still generates LCD decimated bitmaps, but with the
+ added constraint that R=G=B on each triplet.
- the displayed result should be equal to normal anti-aliased
+ The displayed result should be equal to normal anti-aliased
rendering.
- - Some computation bugs in the TrueType bytecode interpreter were found,
- which allow us to get rid of very subtle and rare differences we had
- with the Windows renderer.
+ - Some computation bugs in the TrueType bytecode interpreter were
+ found, which allow us to get rid of very subtle and rare
+ differences we had experienced with the Windows renderer.
+
III. MISCELLANEOUS
- TrueType glyph loading is now about 25% faster.
- - the anti-aliased rasterizer has been optimized and is now 15% to 25%
- percent faster than the previous one, depending on content
+ - The anti-aliased rasterizer has been optimized and is now 15% to
+ 25% percent faster than in previous versions, depending on
+ content.
- - the Type 1 loader has been improved; as an example, it now skips
- over top-level dictionaries properly
+ - The Type 1 loader has been improved; as an example, it now skips
+ top-level dictionaries properly.
+
======================================================================
CHANGES BETWEEN 2.2.1 and 2.2
@@ -557,7 +563,7 @@
III. MISCELLANEOUS
- - Wolfgang Domr�e contributed support files for building FreeType
+ - Wolfgang Domröse contributed support files for building FreeType
on the Atari using the PureC compiler. Note that the Atari is a
16bit platform.
@@ -1141,7 +1147,7 @@
to use the following text in your documentation:
"""
- Portions of this software are copyright 1996-2002 The
+ Portions of this software are copyright © 1996-2002 The
FreeType Project (www.freetype.org). All rights reserved.
"""
@@ -2843,5 +2849,10 @@
file you indicate that you have read the license and understand and
accept it fully.
+
+Local Variables:
+version-control: never
+coding: utf-8
+End:
--- end of CHANGES ---
--- a/include/freetype/config/ftoption.h
+++ b/include/freetype/config/ftoption.h
@@ -77,7 +77,7 @@
/*************************************************************************/
/* */
- /* uncomment the line below if you want to active sub-pixel rendering */
+ /* Uncomment the line below if you want to active sub-pixel rendering */
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
/* */
/* Note that this feature is covered by several Microsoft patents */
@@ -84,15 +84,16 @@
/* and should not be activated in any default build of the library. */
/* */
/* This macro has no impact on the FreeType API, only on its */
- /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
- /* FT_Render_Glyph will still generate a bitmap that is 3 times */
- /* larger than the original size, The difference will be that each */
- /* triplet of subpixels will have R=G=B. */
+ /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
+ /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */
+ /* the original size; the difference will be that each triplet of */
+ /* subpixels has R=G=B. */
/* */
- /* This is done to allow FreeType clients to run unmodified, forcing */
+ /* This is done to allow FreeType clients to run unmodified, forcing */
/* them to display normal gray-level anti-aliased glyphs. */
/* */
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+
/*************************************************************************/
/* */
--- a/src/autofit/afhints.h
+++ b/src/autofit/afhints.h
@@ -213,17 +213,22 @@
#define AF_HINTS_TEST_SCALER( h, f ) ( (h)->scaler_flags & (f) )
#define AF_HINTS_TEST_OTHER( h, f ) ( (h)->other_flags & (f) )
+
#ifdef AF_DEBUG
-#define AF_HINTS_DO_HORIZONTAL( h ) \
- ( !_af_debug_disable_horz_hints && !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL ) )
-#define AF_HINTS_DO_VERTICAL( h ) \
- ( !_af_debug_disable_vert_hints && !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_VERTICAL ) )
+#define AF_HINTS_DO_HORIZONTAL( h ) \
+ ( !_af_debug_disable_horz_hints && \
+ !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL ) )
+#define AF_HINTS_DO_VERTICAL( h ) \
+ ( !_af_debug_disable_vert_hints && \
+ !AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_VERTICAL ) )
+
#define AF_HINTS_DO_ADVANCE( h ) \
!AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
#else /* !AF_DEBUG */
+
#define AF_HINTS_DO_HORIZONTAL( h ) \
!AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_HORIZONTAL )
@@ -234,6 +239,7 @@
!AF_HINTS_TEST_SCALER( h, AF_SCALER_FLAG_NO_ADVANCE )
#endif /* !AF_DEBUG */
+
FT_LOCAL( AF_Direction )
af_direction_compute( FT_Pos dx,
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -4,7 +4,7 @@
/* */
/* Anti-aliasing renderer interface (body). */
/* */
-/* Copyright 2000-2001, 2002, 2003, 2004, 2005 by */
+/* Copyright 2000-2001, 2002, 2003, 2004, 2005, 2006 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -183,6 +183,7 @@
params.flags = FT_RASTER_FLAG_AA;
#ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
/* implode outline if needed */
{
FT_Int n;
@@ -190,11 +191,15 @@
if ( hmul )
- for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ )
+ for ( vec = outline->points, n = 0;
+ n < outline->n_points;
+ n++, vec++ )
vec->x *= hmul;
if ( vmul )
- for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ )
+ for ( vec = outline->points, n = 0;
+ n < outline->n_points;
+ n++, vec++ )
vec->y *= vmul;
}
@@ -208,14 +213,20 @@
if ( hmul )
- for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ )
+ for ( vec = outline->points, n = 0;
+ n < outline->n_points;
+ n++, vec++ )
vec->x /= hmul;
if ( vmul )
- for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ )
+ for ( vec = outline->points, n = 0;
+ n < outline->n_points;
+ n++, vec++ )
vec->y /= vmul;
}
+
#else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
+
/* render outline into bitmap */
error = render->raster_render( render->raster, ¶ms );
@@ -222,19 +233,22 @@
/* expand it horizontally */
if ( hmul > 1 )
{
- FT_Byte* line = bitmap->buffer + (height - height_org)*pitch;
+ FT_Byte* line = bitmap->buffer + ( height - height_org ) * pitch;
FT_UInt hh;
+
for ( hh = height_org; hh > 0; hh--, line += pitch )
{
FT_UInt xx;
FT_Byte* end = line + width;
+
for ( xx = width_org; xx > 0; xx-- )
{
FT_UInt pixel = line[xx-1];
FT_UInt count = hmul;
+
for ( count = hmul; count > 0; count-- )
end[-count] = (FT_Byte)pixel;
@@ -246,13 +260,15 @@
/* expand it vertically */
if ( vmul > 1 )
{
- FT_Byte* read = bitmap->buffer + (height-height_org)*pitch;
- FT_Byte* write = bitmap->buffer;
- FT_UInt hh;
+ FT_Byte* read = bitmap->buffer + ( height - height_org ) * pitch;
+ FT_Byte* write = bitmap->buffer;
+ FT_UInt hh;
+
for ( hh = height_org; hh > 0; hh-- )
{
FT_UInt count = vmul;
+
for ( count = vmul; count > 0; count-- )
{