diff --git a/ChangeLog b/ChangeLog index 4077856d2..494684c32 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2017-03-30 Alexei Podtelezhnikov + + [autofit] LCD equals LIGHT, LCD_V equals NORMAL. + + * include/freetype/freetype.h (FT_LOAD_TARGET_XXX): Docs updated. + * src/autofit/afcjk.c (af_cjk_hints_init): Updated. + * src/autofit/aflatin.c (af_latin_hints_init): Updated. + * src/autofit/aflatin2.c (af_latin2_hints_init): Updated. + 2017-03-12 Alexei Podtelezhnikov [smooth] Dubious fix for Firefox. diff --git a/include/freetype/freetype.h b/include/freetype/freetype.h index 71f0e24fe..8a291f6cd 100644 --- a/include/freetype/freetype.h +++ b/include/freetype/freetype.h @@ -2940,7 +2940,7 @@ FT_BEGIN_HEADER * in non-monochrome modes. * * FT_LOAD_TARGET_LCD :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally + * A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally * decimated LCD displays. * * FT_LOAD_TARGET_LCD_V :: diff --git a/src/autofit/afcjk.c b/src/autofit/afcjk.c index f172a9fd9..5c5daddf7 100644 --- a/src/autofit/afcjk.c +++ b/src/autofit/afcjk.c @@ -1375,26 +1375,25 @@ /* compute flags depending on render mode, etc. */ mode = metrics->root.scaler.render_mode; -#if 0 /* AF_CONFIG_OPTION_USE_WARPER */ - if ( mode == FT_RENDER_MODE_LCD || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_LCD ) + metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT; + + if ( mode == FT_RENDER_MODE_LCD_V ) metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_NORMAL; -#endif scaler_flags = hints->scaler_flags; other_flags = 0; /* - * We snap the width of vertical stems for the monochrome and - * horizontal LCD rendering targets only. + * We snap the width of vertical stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_HORZ_SNAP; /* - * We snap the width of horizontal stems for the monochrome and - * vertical LCD rendering targets only. + * We snap the width of horizontal stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_VERT_SNAP; /* diff --git a/src/autofit/aflatin.c b/src/autofit/aflatin.c index b983460d8..55609798a 100644 --- a/src/autofit/aflatin.c +++ b/src/autofit/aflatin.c @@ -2552,26 +2552,25 @@ /* compute flags depending on render mode, etc. */ mode = metrics->root.scaler.render_mode; -#if 0 /* #ifdef AF_CONFIG_OPTION_USE_WARPER */ - if ( mode == FT_RENDER_MODE_LCD || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_LCD ) + metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT; + + if ( mode == FT_RENDER_MODE_LCD_V ) metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_NORMAL; -#endif scaler_flags = hints->scaler_flags; other_flags = 0; /* - * We snap the width of vertical stems for the monochrome and - * horizontal LCD rendering targets only. + * We snap the width of vertical stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_HORZ_SNAP; /* - * We snap the width of horizontal stems for the monochrome and - * vertical LCD rendering targets only. + * We snap the width of horizontal stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_VERT_SNAP; /* diff --git a/src/autofit/aflatin2.c b/src/autofit/aflatin2.c index 70487569e..d2addd5b7 100644 --- a/src/autofit/aflatin2.c +++ b/src/autofit/aflatin2.c @@ -1532,26 +1532,25 @@ /* compute flags depending on render mode, etc. */ mode = metrics->root.scaler.render_mode; -#if 0 /* #ifdef AF_CONFIG_OPTION_USE_WARPER */ - if ( mode == FT_RENDER_MODE_LCD || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_LCD ) + metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT; + + if ( mode == FT_RENDER_MODE_LCD_V ) metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_NORMAL; -#endif scaler_flags = hints->scaler_flags; other_flags = 0; /* - * We snap the width of vertical stems for the monochrome and - * horizontal LCD rendering targets only. + * We snap the width of vertical stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_HORZ_SNAP; /* - * We snap the width of horizontal stems for the monochrome and - * vertical LCD rendering targets only. + * We snap the width of horizontal stems for the monochrome target only. */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V ) + if ( mode == FT_RENDER_MODE_MONO ) other_flags |= AF_LATIN_HINTS_VERT_SNAP; /* @@ -1566,6 +1565,9 @@ /* * In `light' hinting mode we disable horizontal hinting completely. * We also do it if the face is italic. + * + * However, if warping is enabled (which only works in `light' hinting + * mode), advance widths get adjusted, too. */ if ( mode == FT_RENDER_MODE_LIGHT || ( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )