Index: src/base/ftlcdfil.c =================================================================== --- src/base/ftlcdfil.c.orig 2008-12-17 22:43:42.000000000 -0800 +++ src/base/ftlcdfil.c 2008-12-20 23:52:26.000000000 -0800 @@ -274,9 +274,45 @@ { 0, 85, 86, 85, 0 }; /* the values here sum up to a value larger than 256, */ /* providing a cheap gamma correction */ - static const FT_Byte default_filter[5] = + static FT_Byte default_filter[5] = { 0x10, 0x40, 0x70, 0x40, 0x10 }; + static int checked_filter_params_env = 0; + + if (!checked_filter_params_env) { + char *filter_params = getenv( "FT_FILTER_PARAMS" ); + if (filter_params != NULL ) { + float mid, peak, edge; + float peak_mult, mid_mult; + sscanf(filter_params, "%f %f", + &peak_mult, + &mid_mult + ); + + + peak = peak_mult; + mid = (1.0f - peak) * mid_mult * 0.5f; + edge = (1.0f - peak) * (1.0f - mid_mult) * 0.5f; + + fprintf(stderr, "-- weights: %f %f %f %f %f\n", + edge, mid, peak, mid, edge); + + default_filter[2] = (FT_Byte) (peak * 255.0f + 0.5f); + default_filter[0] = (FT_Byte) (edge * 255.0f + 0.5f); + default_filter[4] = default_filter[0]; + default_filter[1] = (FT_Byte) (mid * 255.0f + 0.5f); + default_filter[3] = default_filter[1]; + + fprintf(stderr, "-- calc'ed weights %d %d %d %d %d\n", + default_filter[0], + default_filter[1], + default_filter[2], + default_filter[3], + default_filter[4]); + + } + checked_filter_params_env = 1; + } if ( library == NULL ) return FT_Err_Invalid_Argument;