From 579c9c3e77c6e81ad10f1defa0cee1bd9e3ee25c Mon Sep 17 00:00:00 2001 From: Pip Cet Date: Sat, 10 Aug 2024 17:01:44 +0000 Subject: [PATCH] Fix coordinate transformations in sfnt.c * 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 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sfnt.c b/src/sfnt.c index 34ff6964c31..b235c795ef7 100644 --- a/src/sfnt.c +++ b/src/sfnt.c @@ -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; } } -- 2.39.2