freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2] master c3be6f0: src/truetype/ttinterp.c: Give order of opera


From: Werner LEMBERG
Subject: [freetype2] master c3be6f0: src/truetype/ttinterp.c: Give order of operations for some instructions.
Date: Tue, 21 May 2019 05:24:51 -0400 (EDT)

branch: master
commit c3be6f06b70bd6636cfdef0e3cf892151d6c7a1d
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>

    src/truetype/ttinterp.c: Give order of operations for some instructions.
---
 src/truetype/ttinterp.c | 33 ++++++++++++++++++++++++++-------
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/truetype/ttinterp.c b/src/truetype/ttinterp.c
index 920d042..70434e1 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,



reply via email to

[Prev in Thread] Current Thread [Next in Thread]