Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.

* include/freetype/config/ftoption.h
(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
default.

* src/autofit/afloader.c (af_loader_load_glyph): Use
AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
This commit is contained in:
Werner Lemberg 2017-04-27 13:02:24 +02:00
parent ab10ffcdd5
commit 0a5315d141
4 changed files with 52 additions and 14 deletions

View File

@ -1,3 +1,14 @@
2017-04-27 Werner Lemberg <wl@gnu.org>
Introduce AF_CONFIG_OPTION_TT_SIZE_METRICS configuration option.
* include/freetype/config/ftoption.h
(AF_CONFIG_OPTION_TT_SIZE_METRICS): New option, commented out by
default.
* src/autofit/afloader.c (af_loader_load_glyph): Use
AF_CONFIG_OPTION_TT_SIZE_METRICS to guard the corresponding code.
2017-04-26 Werner Lemberg <wl@gnu.org>
* include/freetype/freetype.h (FT_Render_Mode): Fix order.

View File

@ -886,7 +886,9 @@ FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* Compile autofit module with Indic script support. */
/* Compile autofit module with fallback Indic script support, covering */
/* some scripts that the `latin' submodule of the autofit module doesn't */
/* (yet) handle. */
/* */
#define AF_CONFIG_OPTION_INDIC
@ -905,6 +907,22 @@ FT_BEGIN_HEADER
/* */
#define AF_CONFIG_OPTION_USE_WARPER
/*************************************************************************/
/* */
/* Use TrueType-like size metrics for `light' auto-hinting. This option */
/* exists mainly for backwards compatibility with GNU/Linux */
/* distributions like Fedora that did not un-patch the following change */
/* (which was present in FreeType between versions 2.4.6 and 2.7.1, */
/* inclusive). */
/* */
/* 2011-07-16 Steven Chu <steven.f.chu@gmail.com> */
/* */
/* [truetype] Fix metrics on size request for scalable fonts. */
/* */
/* This problematic commit is now reverted (more or less). */
/* */
/* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */
/* */

View File

@ -2933,27 +2933,34 @@ FT_BEGIN_HEADER
* rendering. For monochrome output, use @FT_LOAD_TARGET_MONO
* instead.
*
* FT_LOAD_TARGET_LIGHT ::
* A lighter hinting algorithm for gray-level modes. Many generated
* FT_LOAD_TARGET_SLIGHT ::
* A slight hinting algorithm for gray-level modes. Many generated
* glyphs are fuzzier but better resemble their original shape. This
* is achieved by snapping glyphs to the pixel grid only vertically
* (Y-axis), as is done by Microsoft's ClearType and Adobe's
* proprietary font renderer. This preserves inter-glyph spacing in
* (Y-axis), as is done by FreeType's new CFF engine or Microsoft's
* ClearType font renderer. This preserves inter-glyph spacing in
* horizontal text. The snapping is done either by the native font
* driver, if the driver itself and the font support it, or by the
* auto-hinter.
*
* Use this hinting mode if you mainly need integer advance widths
* and want to avoid sub-pixel rendering.
* Advance widths are not rounded to integer values; instead, metrics
* are based on linearly scaled values. In particular this implies
* that you have to apply sub-pixel rendering.
*
* FT_LOAD_TARGET_SLIGHT ::
* This is similar to @FT_LOAD_TARGET_LIGHT with a main difference:
* Advance widths are not rounded to integer values; instead, the
* linearly scaled values are used. In particular this implies that
* you have to apply sub-pixel rendering.
* FT_LOAD_TARGET_LIGHT ::
* This is similar to @FT_LOAD_TARGET_SLIGHT with a main difference:
* It uses integer advance widths.
*
* In general, this mode yields better results than
* @FT_LOAD_TARGET_LIGHT.
* If configuration option AF_CONFIG_OPTION_TT_SIZE_METRICS is active,
* TrueType-like metrics are used to make this mode behave similarly
* as in unpatched FreeType versions between 2.4.6 and 2.7.1
* (inclusive).
*
* This hinting mode is deprecated. In general,
* @FT_LOAD_TARGET_SLIGHT always yields better results; additionally,
* FT_LOAD_TARGET_LIGHT suffers from backwards compatibility issues
* (see the documentation of AF_CONFIG_OPTION_TT_SIZE_METRICS in
* `ftoption.h' for more details).
*
* FT_LOAD_TARGET_MONO ::
* Strong hinting algorithm that should only be used for monochrome

View File

@ -252,6 +252,7 @@
size_internal->autohint_mode = FT_LOAD_TARGET_MODE( load_flags );
size_internal->autohint_metrics = size->metrics;
#ifdef AF_CONFIG_OPTION_TT_SIZE_METRICS
if ( size_internal->autohint_mode != FT_RENDER_MODE_SLIGHT )
{
FT_Size_Metrics* size_metrics = &size_internal->autohint_metrics;
@ -278,6 +279,7 @@
FT_MulFix( face->max_advance_width,
size_metrics->x_scale ) );
}
#endif /* AF_CONFIG_OPTION_TT_SIZE_METRICS */
}
/*