|
|
|
@ -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 |
|
|
|
|