diff options
author | Werner Lemberg <wl@gnu.org> | 2019-05-21 11:23:36 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2019-05-21 11:23:36 +0200 |
commit | c3be6f06b70bd6636cfdef0e3cf892151d6c7a1d (patch) | |
tree | b5cc02adcbc37ced6b733a95fc64a52e4a9aed8c | |
parent | 262fce445a50ee5cc50f177c61b0b4889cdfb6e7 (diff) | |
download | freetype2-c3be6f06b70bd6636cfdef0e3cf892151d6c7a1d.tar.gz |
src/truetype/ttinterp.c: Give order of operations for some instructions.
-rw-r--r-- | src/truetype/ttinterp.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c index 920d04257..70434e172 100644 --- a/src/truetype/ttinterp.c +++ b/src/truetype/ttinterp.c @@ -1694,6 +1694,32 @@ } + /* + * + * Apple's TrueType specification at + * + * https://developer.apple.com/fonts/TrueType-Reference-Manual/RM02/Chap2.html#order + * + * gives the following order of operations in instructions that move + * points. + * + * - check single width cut-in (MIRP, MDRP) + * + * - check control value cut-in (MIRP, MIAP) + * + * - apply engine compensation (MIRP, MDRP) + * + * - round distance (MIRP, MDRP) or value (MIAP, MDAP) + * + * - check minimum distance (MIRP,MDRP) + * + * - move point (MIRP, MDRP, MIAP, MSIRP, MDAP) + * + * For rounding instructions, engine compensation happens before rounding. + * + */ + + /************************************************************************** * * @Function: @@ -1918,7 +1944,6 @@ zone->org[point].y = ADD_LONG( zone->org[point].y, distance ); } - /************************************************************************** * * @Function: @@ -1936,12 +1961,6 @@ * * @Return: * The compensated distance. - * - * @Note: - * The TrueType specification says very few about the relationship - * between rounding and engine compensation. However, it seems from - * the description of super round that we should add the compensation - * before rounding. */ static FT_F26Dot6 Round_None( TT_ExecContext exc, |