From d7bdcb1bb513ac1db99be7461e63f538f9c62293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20R=C3=B6ttsches?= Date: Fri, 23 Jul 2021 19:37:47 +0300 Subject: [sfnt] 'COLR' v1 PaintTranslate and PaintScale precision * src/sfnt/ttcolr.c (read_paint): Implement spec changes in PaintTranslate and PaintScale and friends. Update parsing to read new shorter values. --- src/sfnt/ttcolr.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/sfnt/ttcolr.c b/src/sfnt/ttcolr.c index bd478ab9b..ad305ac62 100644 --- a/src/sfnt/ttcolr.c +++ b/src/sfnt/ttcolr.c @@ -566,8 +566,8 @@ apaint->u.translate.paint.p = child_table_p; apaint->u.translate.paint.insert_root_transform = 0; - apaint->u.translate.dx = FT_NEXT_LONG( p ); - apaint->u.translate.dy = FT_NEXT_LONG( p ); + apaint->u.translate.dx = FT_NEXT_SHORT( p ) << 16; + apaint->u.translate.dy = FT_NEXT_SHORT( p ) << 16; return 1; } @@ -585,14 +585,14 @@ apaint->u.scale.paint.insert_root_transform = 0; /* All scale paints get at least one scale value. */ - apaint->u.scale.scale_x = FT_NEXT_LONG( p ); + apaint->u.scale.scale_x = FT_NEXT_SHORT( p ) << 2; /* Non-uniform ones read an extra y value. */ if ( apaint->format == FT_COLR_PAINTFORMAT_SCALE || (FT_PaintFormat_Internal)apaint->format == FT_COLR_PAINTFORMAT_INTERNAL_SCALE_CENTER ) - apaint->u.scale.scale_y = FT_NEXT_LONG( p ); + apaint->u.scale.scale_y = FT_NEXT_SHORT( p ) << 2; else apaint->u.scale.scale_y = apaint->u.scale.scale_x; @@ -603,8 +603,8 @@ (FT_PaintFormat_Internal)apaint->format == FT_COLR_PAINTFORMAT_INTERNAL_SCALE_UNIFORM_CENTER ) { - apaint->u.scale.center_x = FT_NEXT_LONG ( p ); - apaint->u.scale.center_y = FT_NEXT_LONG ( p ); + apaint->u.scale.center_x = FT_NEXT_SHORT ( p ) << 16; + apaint->u.scale.center_y = FT_NEXT_SHORT ( p ) << 16; } else { -- cgit v1.2.1