From 750d5e56c495ac771c2180183e9fccc00f0fe6bf Mon Sep 17 00:00:00 2001 From: Akira Kakuto Date: Thu, 7 Jul 2016 09:56:43 +0000 Subject: freetype 2.6.4 git-svn-id: svn://tug.org/texlive/trunk@41649 c570f23f-e606-0410-a88d-b1316a301751 --- .../include/freetype/config/ftoption.h | 62 +++++++++++++++++----- .../include/freetype/config/ftstdlib.h | 1 + .../freetype-src/include/freetype/freetype.h | 48 +++++++++-------- .../freetype-src/include/freetype/ftautoh.h | 2 +- .../freetype-src/include/freetype/ftcache.h | 8 +-- .../freetype-src/include/freetype/ftcffdrv.h | 10 ++-- .../freetype-src/include/freetype/ftcid.h | 4 +- .../freetype-src/include/freetype/ftgzip.h | 10 ++-- .../freetype-src/include/freetype/ftimage.h | 2 +- .../freetype-src/include/freetype/ftotval.h | 12 ++--- .../freetype-src/include/freetype/ftsystem.h | 2 +- .../freetype-src/include/freetype/ftttdrv.h | 61 +++++++++++++-------- .../include/freetype/internal/ftdriver.h | 2 +- .../include/freetype/internal/ftmemory.h | 4 +- .../include/freetype/internal/ftobjs.h | 26 ++++----- .../include/freetype/internal/ftrfork.h | 2 +- .../include/freetype/internal/internal.h | 1 - .../include/freetype/internal/tttypes.h | 6 +-- .../freetype-src/include/freetype/tttables.h | 2 +- 19 files changed, 163 insertions(+), 102 deletions(-) (limited to 'Build/source/libs/freetype2/freetype-src/include/freetype') diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h index a8097feb0a6..7dd3f55e572 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftoption.h @@ -586,23 +586,53 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */ - /* EXPERIMENTAL subpixel hinting support into the TrueType driver. This */ - /* replaces the native TrueType hinting mechanism when anything but */ - /* FT_RENDER_MODE_MONO is requested. */ + /* subpixel hinting support into the TrueType driver. This modifies the */ + /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */ + /* requested. */ /* */ - /* Enabling this causes the TrueType driver to ignore instructions under */ - /* certain conditions. This is done in accordance with the guide here, */ - /* with some minor differences: */ + /* In particular, it modifies the bytecode interpreter to interpret (or */ + /* not) instructions in a certain way so that all TrueType fonts look */ + /* like they do in a Windows ClearType (DirectWrite) environment. See */ + /* [1] for a technical overview on what this means. See `ttinterp.h' */ + /* for more details on the LEAN option. */ /* */ - /* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* There are three options. */ /* */ - /* By undefining this, you only compile the code necessary to hint */ - /* TrueType glyphs with native TT hinting. */ + /* 1. This option is associated with the `Infinality' moniker. */ + /* Contributed by an individual nicknamed Infinality with the goal of */ + /* making TrueType fonts render better than on Windows. A high */ + /* amount of configurability and flexibility, down to rules for */ + /* single glyphs in fonts, but also very slow. Its experimental and */ + /* slow nature and the original developer losing interest meant that */ + /* this option was never enabled in default builds. */ /* */ - /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ - /* defined. */ + /* 2. The new default mode for the TrueType driver. The Infinality code */ + /* base was stripped to the bare minimum and all configurability */ + /* removed in the name of speed and simplicity. The configurability */ + /* was mainly aimed at legacy fonts like Arial, Times New Roman, or */ + /* Courier. Legacy fonts are fonts that modify vertical stems to */ + /* achieve clean black-and-white bitmaps. The new mode focuses on */ + /* applying a minimal set of rules to all fonts indiscriminately so */ + /* that modern and web fonts render well while legacy fonts render */ + /* okay. */ /* */ -/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING */ + /* 3. Compile both. */ + /* */ + /* By undefining these, you get rendering behavior like on Windows */ + /* without ClearType, i.e., Windows XP without ClearType enabled and */ + /* Win9x (interpreter version v35). Or not, depending on how much */ + /* hinting blood and testing tears the font designer put into a given */ + /* font. If you define one or both subpixel hinting options, you can */ + /* switch between between v35 and the ones you define. */ + /* */ + /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */ + /* defined. */ + /* */ + /* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */ + /* */ +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */ +#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2 +/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */ /*************************************************************************/ @@ -811,6 +841,14 @@ FT_BEGIN_HEADER */ #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER #define TT_USE_BYTECODE_INTERPRETER + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1 +#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY +#endif + +#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2 +#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL +#endif #endif diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h index 9daea56f7fc..562e255810b 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/config/ftstdlib.h @@ -63,6 +63,7 @@ #define FT_INT_MAX INT_MAX #define FT_INT_MIN INT_MIN #define FT_UINT_MAX UINT_MAX +#define FT_LONG_MIN LONG_MIN #define FT_LONG_MAX LONG_MAX #define FT_ULONG_MAX ULONG_MAX diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h b/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h index 4666d489361..7baf185ce1d 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/freetype.h @@ -651,11 +651,11 @@ FT_BEGIN_HEADER /* */ /* FT_ENCODING_SJIS :: */ /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://en.wikipedia.org/wiki/Shift_JIS'. */ + /* `http://en.wikipedia.org/wiki/Shift_JIS'. */ /* See note on multi-byte encodings below. */ /* */ /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ + /* Corresponds to an encoding system for Simplified Chinese as */ /* used in mainland China. */ /* */ /* FT_ENCODING_BIG5 :: */ @@ -1103,7 +1103,7 @@ FT_BEGIN_HEADER /* FT_FACE_FLAG_SCALABLE :: */ /* Indicates that the face contains outline glyphs. This doesn't */ /* prevent bitmap strikes, i.e., a face can have both this and */ - /* and @FT_FACE_FLAG_FIXED_SIZES set. */ + /* @FT_FACE_FLAG_FIXED_SIZES set. */ /* */ /* FT_FACE_FLAG_FIXED_SIZES :: */ /* Indicates that the face contains bitmap strikes. See also the */ @@ -1222,7 +1222,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) + ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL ) /************************************************************************* @@ -1236,7 +1236,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_VERTICAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_VERTICAL ) + ( (face)->face_flags & FT_FACE_FLAG_VERTICAL ) /************************************************************************* @@ -1250,7 +1250,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) + ( (face)->face_flags & FT_FACE_FLAG_KERNING ) /************************************************************************* @@ -1265,7 +1265,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_SCALABLE( face ) \ - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) + ( (face)->face_flags & FT_FACE_FLAG_SCALABLE ) /************************************************************************* @@ -1284,7 +1284,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) + ( (face)->face_flags & FT_FACE_FLAG_SFNT ) /************************************************************************* @@ -1299,7 +1299,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) + ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) /************************************************************************* @@ -1314,7 +1314,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) + ( (face)->face_flags & FT_FACE_FLAG_FIXED_SIZES ) /************************************************************************* @@ -1340,7 +1340,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) + ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) /************************************************************************* @@ -1355,7 +1355,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) + ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) /************************************************************************* @@ -1373,7 +1373,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_CID_KEYED( face ) \ - ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) + ( (face)->face_flags & FT_FACE_FLAG_CID_KEYED ) /************************************************************************* @@ -1387,7 +1387,7 @@ FT_BEGIN_HEADER * */ #define FT_IS_TRICKY( face ) \ - ( face->face_flags & FT_FACE_FLAG_TRICKY ) + ( (face)->face_flags & FT_FACE_FLAG_TRICKY ) /************************************************************************* @@ -1401,7 +1401,7 @@ FT_BEGIN_HEADER * */ #define FT_HAS_COLOR( face ) \ - ( face->face_flags & FT_FACE_FLAG_COLOR ) + ( (face)->face_flags & FT_FACE_FLAG_COLOR ) /*************************************************************************/ @@ -1941,7 +1941,7 @@ FT_BEGIN_HEADER /* */ /* If the @FT_OPEN_MEMORY bit is set, assume that this is a */ /* memory file of `memory_size' bytes, located at `memory_address'. */ - /* The data are are not copied, and the client is responsible for */ + /* The data are not copied, and the client is responsible for */ /* releasing and destroying them _after_ the corresponding call to */ /* @FT_Done_Face. */ /* */ @@ -2339,9 +2339,9 @@ FT_BEGIN_HEADER /* used to determine both scaling values. */ /* */ /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ - /* The real dimension. The sum of the the `ascender' and (minus */ - /* of) the `descender' fields of @FT_FaceRec are used to determine */ - /* both scaling values. */ + /* The real dimension. The sum of the `ascender' and (minus of) */ + /* the `descender' fields of @FT_FaceRec are used to determine both */ + /* scaling values. */ /* */ /* FT_SIZE_REQUEST_TYPE_BBOX :: */ /* The font bounding box. The width and height of the `bbox' field */ @@ -2578,6 +2578,10 @@ FT_BEGIN_HEADER /* don't have a corresponding glyph in the font). See the discussion */ /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ /* */ + /* If you receive `FT_Err_Glyph_Too_Big', try getting the glyph */ + /* outline at EM size, then scale it manually and fill it as a */ + /* graphics operation. */ + /* */ FT_EXPORT( FT_Error ) FT_Load_Glyph( FT_Face face, FT_UInt glyph_index, @@ -2855,7 +2859,7 @@ FT_BEGIN_HEADER * * If @FT_LOAD_RENDER is also set, the glyph is rendered in the * corresponding mode (i.e., the mode that matches the used algorithm - * best). An exeption is FT_LOAD_TARGET_MONO since it implies + * best). An exception is FT_LOAD_TARGET_MONO since it implies * @FT_LOAD_MONOCHROME. * * You can use a hinting algorithm that doesn't correspond to the same @@ -3273,7 +3277,7 @@ FT_BEGIN_HEADER /* `.notdef'). */ /* */ /* This function always returns an error if the config macro */ - /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoptions.h'. */ + /* `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'. */ /* */ FT_EXPORT( FT_Error ) FT_Get_Glyph_Name( FT_Face face, @@ -4172,7 +4176,7 @@ FT_BEGIN_HEADER */ #define FREETYPE_MAJOR 2 #define FREETYPE_MINOR 6 -#define FREETYPE_PATCH 3 +#define FREETYPE_PATCH 4 /*************************************************************************/ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h index 8052dd23dc4..40c8003c4aa 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftautoh.h @@ -219,8 +219,8 @@ FT_BEGIN_HEADER * U+0F00 - U+0FFF // Tibetan * U+1900 - U+194F // Limbu * U+1B80 - U+1BBF // Sundanese - * U+1C80 - U+1CDF // Meetei Mayak * U+A800 - U+A82F // Syloti Nagri + * U+ABC0 - U+ABFF // Meetei Mayek * U+11800 - U+118DF // Sharada * } * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h index 6c9f2c42b0a..883c88d5d20 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcache.h @@ -749,7 +749,7 @@ FT_BEGIN_HEADER /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* anode :: Used to return the address of the corresponding cache */ /* node after incrementing its reference count (see note */ /* below). */ /* */ @@ -802,7 +802,7 @@ FT_BEGIN_HEADER /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ /* failure. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* anode :: Used to return the address of the corresponding */ /* cache node after incrementing its reference count */ /* (see note below). */ /* */ @@ -957,7 +957,7 @@ FT_BEGIN_HEADER /* */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding cache */ + /* anode :: Used to return the address of the corresponding cache */ /* node after incrementing its reference count (see note */ /* below). */ /* */ @@ -1012,7 +1012,7 @@ FT_BEGIN_HEADER /* */ /* sbit :: A handle to a small bitmap descriptor. */ /* */ - /* anode :: Used to return the address of of the corresponding */ + /* anode :: Used to return the address of the corresponding */ /* cache node after incrementing its reference count */ /* (see note below). */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h index 9dea980ab6d..ad34541fdb1 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcffdrv.h @@ -89,7 +89,7 @@ FT_BEGIN_HEADER * features preserve the design's weight and spacing much better than * aliased type would. * - * 2) Aligment in the vertical direction: Weights and spacing along the + * 2) Alignment in the vertical direction: Weights and spacing along the * y~axis are less critical; what is much more important is the visual * alignment of related features (like cap-height and x-height). The * sense of alignment for these is enhanced by the sharpness of grid-fit @@ -110,7 +110,7 @@ FT_BEGIN_HEADER * to minimize distortion. * * @order: - * hinting-engine + * hinting-engine[cff] * no-stem-darkening[cff] * darkening-parameters[cff] * @@ -120,7 +120,7 @@ FT_BEGIN_HEADER /************************************************************************** * * @property: - * hinting-engine + * hinting-engine[cff] * * @description: * Thanks to Adobe, which contributed a new hinting (and parsing) @@ -157,8 +157,8 @@ FT_BEGIN_HEADER * FT_CFF_HINTING_XXX * * @description: - * A list of constants used for the @hinting-engine property to select - * the hinting engine for CFF fonts. + * A list of constants used for the @hinting-engine[cff] property to + * select the hinting engine for CFF fonts. * * @values: * FT_CFF_HINTING_FREETYPE :: diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h index 140f2f87f76..e1bc9fe015c 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcid.h @@ -97,8 +97,8 @@ FT_BEGIN_HEADER * * @description: * Retrieve the type of the input face, CID keyed or not. In - * constrast to the @FT_IS_CID_KEYED macro this function returns - * successfully also for CID-keyed fonts in an SNFT wrapper. + * contrast to the @FT_IS_CID_KEYED macro this function returns + * successfully also for CID-keyed fonts in an SFNT wrapper. * * @input: * face :: diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h index 9e658b0df16..3932ce68871 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftgzip.h @@ -117,11 +117,11 @@ FT_BEGIN_HEADER * * @inout: * output_len :: - * Before calling the function, this is the the total size of the - * output buffer, which must be large enough to hold the entire - * uncompressed data (so the size of the uncompressed data must be - * known in advance). After calling the function, `output_len' is the - * size of the used data in `output'. + * Before calling the function, this is the total size of the output + * buffer, which must be large enough to hold the entire uncompressed + * data (so the size of the uncompressed data must be known in + * advance). After calling the function, `output_len' is the size of + * the used data in `output'. * * @return: * FreeType error code. 0~means success. diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h index 1d557c93f53..28b2704e80e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftimage.h @@ -747,7 +747,7 @@ FT_BEGIN_HEADER /*************************************************************************/ /* */ /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ + /* a bitmap. This section contains the public API for rasters. */ /* */ /* Note that in FreeType 2, all rasters are now encapsulated within */ /* specific modules called `renderers'. See `ftrender.h' for more */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h index c678ef34477..3e6e18d8a62 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftotval.h @@ -106,12 +106,12 @@ FT_BEGIN_HEADER #define FT_VALIDATE_JSTF 0x1000 #define FT_VALIDATE_MATH 0x2000 -#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ - FT_VALIDATE_GDEF | \ - FT_VALIDATE_GPOS | \ - FT_VALIDATE_GSUB | \ - FT_VALIDATE_JSTF | \ - FT_VALIDATE_MATH +#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \ + FT_VALIDATE_GDEF | \ + FT_VALIDATE_GPOS | \ + FT_VALIDATE_GSUB | \ + FT_VALIDATE_JSTF | \ + FT_VALIDATE_MATH ) /********************************************************************** * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h index 908ae07f0b7..a75f9580220 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftsystem.h @@ -290,7 +290,7 @@ FT_BEGIN_HEADER * The stream size in bytes. * * In case of compressed streams where the size is unknown before - * actually doing the decompression, the value is set to 0x7FFFFFFF. + * actually doing the decompression, the value is set to 0x7FFFFFFF. * (Note that this size value can occur for normal streams also; it is * thus just a hint.) * diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h index 6c02e6576d4..0d868bc2590 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftttdrv.h @@ -138,31 +138,37 @@ FT_BEGIN_HEADER * interpreter-version * * @description: - * Currently, two versions are available, representing the bytecode - * interpreter with and without subpixel hinting support, - * respectively. The default is subpixel support if - * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel - * support otherwise (since it isn't available then). + + * Currently, three versions are available, two representing the + * bytecode interpreter with subpixel hinting support (old `Infinality' + * code and new stripped-down and higher performance `minimal' code) and + * one without, respectively. The default is subpixel support if + * TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support + * otherwise (since it isn't available then). * * If subpixel hinting is on, many TrueType bytecode instructions behave * differently compared to B/W or grayscale rendering (except if `native - * ClearType' is selected by the font). The main idea is to render at a - * much increased horizontal resolution, then sampling down the created - * output to subpixel precision. However, many older fonts are not - * suited to this and must be specially taken care of by applying - * (hardcoded) font-specific tweaks. + * ClearType' is selected by the font). Microsoft's main idea is to + * render at a much increased horizontal resolution, then sampling down + * the created output to subpixel precision. However, many older fonts + * are not suited to this and must be specially taken care of by + * applying (hardcoded) tweaks in Microsoft's interpreter. * * Details on subpixel hinting and some of the necessary tweaks can be * found in Greg Hitchcock's whitepaper at - * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'. + * Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2, + * or 6x5 supersampling) like discussed in the paper. Depending on the + * chosen interpreter, it simply ignores instructions on vertical stems + * to arrive at very similar results. * - * The following example code demonstrates how to activate subpixel + * The following example code demonstrates how to deactivate subpixel * hinting (omitting the error handling). * * { * FT_Library library; * FT_Face face; - * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_38; + * FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35; * * * FT_Init_FreeType( &library ); @@ -197,9 +203,19 @@ FT_BEGIN_HEADER * * TT_INTERPRETER_VERSION_38 :: * Version~38 corresponds to MS rasterizer v.1.9; it is roughly - * equivalent to the hinting provided by DirectWrite ClearType (as - * can be found, for example, in the Internet Explorer~9 running on - * Windows~7). + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in the Internet Explorer~9 running on + * Windows~7). It is used in FreeType to select the `Infinality' + * subpixel hinting code. The code may be removed in a future + * version. + * + * TT_INTERPRETER_VERSION_40 :: + * Version~40 corresponds to MS rasterizer v.2.1; it is roughly + * equivalent to the hinting provided by DirectWrite ClearType (as can + * be found, for example, in Microsoft's Edge Browser on Windows~10). + * It is used in FreeType to select the `minimal' subpixel hinting + * code, a stripped-down and higher performance version of the + * `Infinality' code. * * @note: * This property controls the behaviour of the bytecode interpreter @@ -207,9 +223,9 @@ FT_BEGIN_HEADER * get rasterized! In particular, it does not control subpixel color * filtering. * - * If FreeType has not been compiled with configuration option - * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 causes an - * `FT_Err_Unimplemented_Feature' error. + * If FreeType has not been compiled with the configuration option + * FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 or~40 causes + * an `FT_Err_Unimplemented_Feature' error. * * Depending on the graphics framework, Microsoft uses different * bytecode and rendering engines. As a consequence, the version @@ -290,13 +306,14 @@ FT_BEGIN_HEADER * the version~1 gasp table exclusively (like Color ClearType), while * v1.6 only respects the values of version~0 (bits 0 and~1). * - * FreeType doesn't provide all capabilities of the most recent - * ClearType incarnation, thus we identify our subpixel support as - * version~38. + * Keep in mind that the features of the above interpreter versions + * might not map exactly to FreeType features or behavior because it is + * a fundamentally different library with different internals. * */ #define TT_INTERPRETER_VERSION_35 35 #define TT_INTERPRETER_VERSION_38 38 +#define TT_INTERPRETER_VERSION_40 40 /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h index 4b28e6a4764..3e1e66e9798 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftdriver.h @@ -213,7 +213,7 @@ FT_BEGIN_HEADER /* And when it is no longer needed a `destroy' function needs to be */ /* called to release that allocation. */ /* */ - /* `fcinit.c' (ft_create_default_module_classes) already contains a */ + /* `ftinit.c' (ft_create_default_module_classes) already contains a */ /* mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h index 3157dafa6e2..8c06fc21a5e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftmemory.h @@ -65,13 +65,15 @@ FT_BEGIN_HEADER #ifdef __cplusplus - extern "C++" +extern "C++" +{ template inline T* cplusplus_typeof( T*, void *v ) { return static_cast ( v ); } +} #define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h index c37c07e7a4b..e3fa32083be 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftobjs.h @@ -833,7 +833,7 @@ FT_BEGIN_HEADER /* filtering callback function. */ /* */ /* pic_container :: Contains global structs and tables, instead */ - /* of defining them globallly. */ + /* of defining them globally. */ /* */ /* refcount :: A counter initialized to~1 at the time an */ /* @FT_Library structure is created. */ @@ -971,8 +971,8 @@ FT_BEGIN_HEADER /* */ /* */ /* Used to initialize an instance of FT_Outline_Funcs struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1030,8 +1030,8 @@ FT_BEGIN_HEADER /* */ /* */ /* Used to initialize an instance of FT_Raster_Funcs struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated structure to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1090,8 +1090,8 @@ FT_BEGIN_HEADER /* */ /* */ /* Used to initialize an instance of FT_Glyph_Class struct. */ - /* When FT_CONFIG_OPTION_PIC is defined an init funtion will need to */ - /* be called with a pre-allocated stcture to be filled. */ + /* When FT_CONFIG_OPTION_PIC is defined an init function will need */ + /* to be called with a pre-allocated structure to be filled. */ /* When FT_CONFIG_OPTION_PIC is not defined the struct will be */ /* allocated in the global scope (or the scope where the macro */ /* is used). */ @@ -1164,11 +1164,11 @@ FT_BEGIN_HEADER /* */ /* Used to initialize an instance of FT_Renderer_Class struct. */ /* */ - /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion will need */ - /* to be called with a pointer where the allocated structure is */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function will */ + /* need to be called with a pointer where the allocated structure is */ /* returned. And when it is no longer needed a `destroy' function */ /* needs to be called to release that allocation. */ - /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* `ftinit.c' (ft_create_default_module_classes) already contains */ /* a mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ @@ -1368,11 +1368,11 @@ FT_BEGIN_HEADER /* */ /* Used to initialize an instance of an FT_Module_Class struct. */ /* */ - /* When FT_CONFIG_OPTION_PIC is defined a `create' funtion needs to */ - /* be called with a pointer where the allocated structure is */ + /* When FT_CONFIG_OPTION_PIC is defined a `create' function needs */ + /* to be called with a pointer where the allocated structure is */ /* returned. And when it is no longer needed a `destroy' function */ /* needs to be called to release that allocation. */ - /* `fcinit.c' (ft_create_default_module_classes) already contains */ + /* `ftinit.c' (ft_create_default_module_classes) already contains */ /* a mechanism to call these functions for the default modules */ /* described in `ftmodule.h'. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h index 13a68fe5ba3..b923401e686 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/ftrfork.h @@ -227,7 +227,7 @@ FT_BEGIN_HEADER /* sort_by_res_id :: */ /* A Boolean to sort the fragmented resource by their ids. */ /* The fragmented resources for `POST' resource should be sorted */ - /* to restore Type1 font properly. For `snft' resources, sorting */ + /* to restore Type1 font properly. For `sfnt' resources, sorting */ /* may induce a different order of the faces in comparison to that */ /* by QuickDraw API. */ /* */ diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h index 689afa9fc48..8c3c14c12a7 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/internal.h @@ -44,7 +44,6 @@ #define FT_INTERNAL_POSTSCRIPT_AUX_H #define FT_INTERNAL_POSTSCRIPT_HINTS_H -#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H #define FT_INTERNAL_AUTOHINT_H diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h index 8643775066b..4110d50285e 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/internal/tttypes.h @@ -185,7 +185,7 @@ FT_BEGIN_HEADER /* */ /* CompLength :: Compressed table length (in bytes). */ /* */ - /* OrigLength :: Unompressed table length (in bytes). */ + /* OrigLength :: Uncompressed table length (in bytes). */ /* */ /* CheckSum :: The table checksum. This value can be ignored. */ /* */ @@ -1386,12 +1386,12 @@ FT_BEGIN_HEADER FT_ULong horz_metrics_offset; FT_ULong vert_metrics_offset; -#ifdef TT_CONFIG_OPTION_SUBPIXEL_HINTING +#ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY /* since 2.4.12 */ FT_ULong sph_found_func_flags; /* special functions found */ /* for this face */ FT_Bool sph_compatibility_mode; -#endif /* TT_CONFIG_OPTION_SUBPIXEL_HINTING */ +#endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */ } TT_FaceRec; diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h b/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h index dfe3bcb1c80..1c075dcf66a 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/tttables.h @@ -587,7 +587,7 @@ FT_BEGIN_HEADER /* */ /* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */ /* */ - /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader struture. */ + /* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */ /* */ /* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */ /* */ -- cgit v1.2.3