]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix coordinate transformations in sfnt.c
authorPip Cet <pipcet@protonmail.com>
Sat, 10 Aug 2024 17:01:44 +0000 (17:01 +0000)
committerEshel Yaron <me@eshelyaron.com>
Sun, 11 Aug 2024 07:31:57 +0000 (09:31 +0200)
* src/sfnt.c (sfnt_transform_coordinates):
(sfnt_transform_f26dot6): Fix calculation of transformed coordinates in
the very rare case of arbitrary transformation matrices.

(cherry picked from commit b6c2f360694831753a9064e48434d29d7ab07505)

src/sfnt.c

index 34ff6964c31eee9bec15d2517f2aa4bb71903729..b235c795ef7298540377537b13eb9be7a01d9eef 100644 (file)
@@ -2578,8 +2578,10 @@ sfnt_transform_coordinates (struct sfnt_compound_glyph_component *component,
 
   for (i = 0; i < num_coordinates; ++i)
     {
-      x[i] = m1 * x[i] + m2 * y[i] + m3 * 1;
-      y[i] = m4 * x[i] + m5 * y[i] + m6 * 1;
+      sfnt_fixed xi = m1 * x[i] + m2 * y[i] + m3 * 1;
+      sfnt_fixed yi = m4 * x[i] + m5 * y[i] + m6 * 1;
+      x[i] = xi;
+      y[i] = yi;
     }
 }
 
@@ -12822,8 +12824,10 @@ sfnt_transform_f26dot6 (struct sfnt_compound_glyph_component *component,
 
   for (i = 0; i < num_coordinates; ++i)
     {
-      x[i] = m1 * x[i] + m2 * y[i] + m3 * 1;
-      y[i] = m4 * x[i] + m5 * y[i] + m6 * 1;
+      sfnt_f26dot6 xi = m1 * x[i] + m2 * y[i] + m3 * 1;
+      sfnt_f26dot6 yi = m4 * x[i] + m5 * y[i] + m6 * 1;
+      x[i] = xi;
+      y[i] = yi;
     }
 }