forked from minhngoc25a/freetype2
[autofit] Handle LCD lightly.
This commit explicitly disables stem adjustment and metrics changes for FT_LOAD_TARGET_LCD, redoing the last commit. * 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.
This commit is contained in:
parent
e47feb03cc
commit
66006dbfa4
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2017-04-02 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[autofit] Handle LCD lightly.
|
||||
|
||||
This commit explicitly disables stem adjustment and metrics changes
|
||||
for FT_LOAD_TARGET_LCD, redoing the last commit.
|
||||
|
||||
* 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-30 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||
|
||||
[autofit] LCD equals LIGHT, LCD_V equals NORMAL.
|
||||
|
|
|
@ -1375,31 +1375,32 @@
|
|||
/* compute flags depending on render mode, etc. */
|
||||
mode = metrics->root.scaler.render_mode;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD )
|
||||
metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD_V )
|
||||
#if 0 /* AF_CONFIG_OPTION_USE_WARPER */
|
||||
if ( mode == FT_RENDER_MODE_LCD || 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 target only.
|
||||
* We snap the width of vertical stems for the monochrome and
|
||||
* horizontal LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
|
||||
|
||||
/*
|
||||
* We snap the width of horizontal stems for the monochrome target only.
|
||||
* We snap the width of horizontal stems for the monochrome and
|
||||
* vertical LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
|
||||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
|
|
|
@ -2552,45 +2552,46 @@
|
|||
/* compute flags depending on render mode, etc. */
|
||||
mode = metrics->root.scaler.render_mode;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD )
|
||||
metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD_V )
|
||||
#if 0 /* #ifdef AF_CONFIG_OPTION_USE_WARPER */
|
||||
if ( mode == FT_RENDER_MODE_LCD || 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 target only.
|
||||
* We snap the width of vertical stems for the monochrome and
|
||||
* horizontal LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
|
||||
|
||||
/*
|
||||
* We snap the width of horizontal stems for the monochrome target only.
|
||||
* We snap the width of horizontal stems for the monochrome and
|
||||
* vertical LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
|
||||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
other_flags |= AF_LATIN_HINTS_MONO;
|
||||
|
||||
/*
|
||||
* In `light' hinting mode we disable horizontal hinting completely.
|
||||
* In `light' or `lcd' 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 )
|
||||
if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
scaler_flags |= AF_SCALER_FLAG_NO_HORIZONTAL;
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
|
|
|
@ -1532,45 +1532,43 @@
|
|||
/* compute flags depending on render mode, etc. */
|
||||
mode = metrics->root.scaler.render_mode;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD )
|
||||
metrics->root.scaler.render_mode = mode = FT_RENDER_MODE_LIGHT;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_LCD_V )
|
||||
#if 0 /* #ifdef AF_CONFIG_OPTION_USE_WARPER */
|
||||
if ( mode == FT_RENDER_MODE_LCD || 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 target only.
|
||||
* We snap the width of vertical stems for the monochrome and
|
||||
* horizontal LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
|
||||
|
||||
/*
|
||||
* We snap the width of horizontal stems for the monochrome target only.
|
||||
* We snap the width of horizontal stems for the monochrome and
|
||||
* vertical LCD rendering targets only.
|
||||
*/
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V )
|
||||
other_flags |= AF_LATIN_HINTS_VERT_SNAP;
|
||||
|
||||
/*
|
||||
* We adjust stems to full pixels only if we don't use the `light' mode.
|
||||
* We adjust stems to full pixels unless in `light' or `lcd' mode.
|
||||
*/
|
||||
if ( mode != FT_RENDER_MODE_LIGHT )
|
||||
if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
|
||||
other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
|
||||
|
||||
if ( mode == FT_RENDER_MODE_MONO )
|
||||
other_flags |= AF_LATIN_HINTS_MONO;
|
||||
|
||||
/*
|
||||
* In `light' hinting mode we disable horizontal hinting completely.
|
||||
* In `light' or `lcd' 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 )
|
||||
if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
|
||||
( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0 )
|
||||
scaler_flags |= AF_SCALER_FLAG_NO_HORIZONTAL;
|
||||
|
||||
#ifdef AF_CONFIG_OPTION_USE_WARPER
|
||||
|
|
Loading…
Reference in New Issue