ref: 109d1662d414e880daf509d7e36be4c2bdf443d9
parent: a0f3a1f25a69a7c5268e87ee6e7a9238c26e6242
author: Werner Lemberg <[email protected]>
date: Fri Jul 8 02:58:46 EDT 2016
Revert "Formatting." This reverts commit a0f3a1f25a69a7c5268e87ee6e7a9238c26e6242.
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,25 +2,25 @@
[smooth] Sub-banding protocol revision.
- Rasterization sub-banding is utilized at large sizes while using a
- rather small fixed memory pool. Indeed it is possible to make an
+ Rasterization sub-banding is utilized at large sizes while using
+ rather small fixed memory pool. Indeed it is possible to make an
educated guess how much memory is necessary at a given size for a
- given glyph. It turns out that, for a large majority of European
- glyphs, you should store about 8 times more boundary pixels than
- their height. Or, vice versa, if your memory pool can hold 800
- pixels the band height should be 100 and you should sub-band
- anything larger than that. Should you still run out of memory,
- FreeType bisects the band but you have wasted some time. This is
- what has been implemented in FreeType since the beginning.
+ given glyph. It turns out that, for large majority of European glyphs,
+ you should store about 8 times more boundary pixels than their height.
+ Or, vice versa, if your memory pool can hold 800 pixels the band
+ height should be 100 and you should sub-band anything larger than
+ that. Should you still run out of memory, FreeType bisects the band
+ but you have wasted some time. This is what has been implemented in
+ FreeType since the beginning.
- It was overlooked, however, that the top band could grow to twice
- the default band size leading to unnecessary memory overflows there.
- This commit fixes that. Now the bands are distributed more evenly
- and cannot exceed the default size.
+ It was overlooked, however, that the top band could grow to twice the
+ default band size leading to unnecessary memory overflows there. This
+ commit fixes that. Now the bands are distributed more evenly and
+ cannot exceed the default size.
Now the magic number 8 is really suitable for rather simple European
- scripts. For complex Chinese logograms the magic number should be
- 13 but that is subject for another day.
+ scripts. For complex Chinese logograms the magic number should be 13
+ but that is subject for another day.
* src/smooth/ftgrays.c (gray_convert_glyph): Revise sub-banding
protocol.
--- a/include/freetype/config/ftstdlib.h
+++ b/include/freetype/config/ftstdlib.h
@@ -142,8 +142,7 @@
/**********************************************************************/
-#define ft_atol atol
-#define ft_getenv getenv
+#define ft_atol atol
/**********************************************************************/
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -226,123 +226,6 @@
}
-#ifdef FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
-
-#define MAX_LENGTH 128
-
- /*
- * The `FREETYPE_PROPERTIES' environment variable has the following
- * syntax form (broken here into multiple lines for better readability)
- *
- * <whitespace>
- * <module-name1> ':'
- * <property-name1> '=' <property-value1>
- * <whitespace>
- * <module-name2> ':'
- * <property-name2> '=' <property-value2>
- * ...
- *
- * Example:
- *
- * FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
- * cff:no-stem-darkening=1 \
- * autofitter:warping=1
- *
- */
-
- static void
- ft_get_default_properties( FT_Library library )
- {
- const char* env;
- const char* p;
- const char* q;
-
- char module_name[MAX_LENGTH + 1];
- char property_name[MAX_LENGTH + 1];
- char property_value[MAX_LENGTH + 1];
-
- int i;
-
-
- env = getenv( "FREETYPE_PROPERTIES" );
- if ( !env )
- return;
-
- for ( p = env; *p; p++ )
- {
- module_name[0] = '\0';
- property_name[0] = '\0';
- property_value[0] = '\0';
-
- /* skip leading whitespace and separators */
- if ( *p == ' ' || *p == '\t' )
- continue;
-
- /* read module name, followed by `:' */
- q = p;
- for ( i = 0; i < MAX_LENGTH; i++ )
- {
- if ( !*p || *p == ':' )
- break;
- module_name[i] = *p++;
- }
- module_name[i] = '\0';
-
- if ( !*p )
- break;
- if ( *p != ':' || p == q )
- break;
-
- /* read property name, followed by `=' */
- q = p;
- for ( i = 0; i < MAX_LENGTH; i++ )
- {
- if ( !*p || *p == '=' )
- break;
- property_name[i] = *p++;
- }
- property_name[i] = '\0';
-
- if ( !*p )
- break;
- if ( *p != '=' || p == q )
- break;
-
- /* read property value, followed by whitespace (if any) */
- q = p;
- for ( i = 0; i < MAX_LENGTH; i++ )
- {
- if ( !*p || *p == ' ' || *p == '\t' )
- break;
- property_value[i] = *p++;
- }
- property_value[i] = '\0';
-
- if ( !( *p == '\0' || *p == ' ' || *p == '\t' ) || p == q )
- break;
-
- /* we have all data; resolve them into a call to FT_Property_Set */
- /* if possible */
-
- /* we completely ignore errors */
- FT_Property_Set( library,
- module_name,
- property_name,
- property_value );
- }
- }
-
-#else
-
- static void
- ft_get_default_properties( FT_Library library )
- {
- FT_UNUSED( library );
- }
-
-#endif
-
-
/* documentation is in freetype.h */
FT_EXPORT_DEF( FT_Error )
@@ -372,8 +255,6 @@
FT_Done_Memory( memory );
else
FT_Add_Default_Modules( *alibrary );
-
- ft_get_default_properties( *alibrary );
return error;
}
--- a/src/smooth/ftgrays.c
+++ b/src/smooth/ftgrays.c
@@ -1911,7 +1911,7 @@
min = ras.min_ey;
max_y = ras.max_ey;
- for ( ; min < max_y; min = max )
+ for (; min < max_y; min = max )
{
max = min + band_size;
if ( max > max_y )