diff options
author | Alexei Podtelezhnikov <apodtele@gmail.com> | 2018-12-18 22:40:04 -0500 |
---|---|---|
committer | Alexei Podtelezhnikov <apodtele@gmail.com> | 2018-12-18 22:40:04 -0500 |
commit | 1728230b6d46da3a8bd208550182dbfacf2b5a7b (patch) | |
tree | 0982ee5b4d2b1b123bb7fbfea6f6f3477011e098 | |
parent | 953b3682b69b438ce7e6827628909788da25c373 (diff) | |
download | freetype2-1728230b6d46da3a8bd208550182dbfacf2b5a7b.tar.gz |
* src/smooth/ftsmooth.c (ft_smooth_render_bgra): Restore contours.color
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/smooth/ftsmooth.c | 9 |
2 files changed, 11 insertions, 2 deletions
@@ -1,3 +1,7 @@ +2018-12-18 Alexei Podtelezhnikov <apodtele@gmail.com> + + * src/smooth/ftsmooth.c (ft_smooth_render_bgra): Restore contours. + 2018-12-11 Alexei Podtelezhnikov <apodtele@gmail.com> Color glyph framework and rendering (3/3). diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c index 44ceb09ed..4d80bc9e8 100644 --- a/src/smooth/ftsmooth.c +++ b/src/smooth/ftsmooth.c @@ -432,7 +432,7 @@ FT_Outline outline = slot->outline; /* hard copy */ FT_Bitmap target; FT_Vector target_offset, offset; - short i, c_done, p_done; + short i, j, c_done, p_done; /* check glyph image format */ @@ -471,7 +471,8 @@ slot->outline.n_points = outline.contours[i] - p_done + 1; slot->outline.contours[i - c_done] = outline.contours[i] - p_done; - if ( i == outline.n_contours - 1 || + /* layer ends when color changes */ + if ( i == outline.n_contours - 1 || slot->color[i + 1].red != slot->color[c_done].red || slot->color[i + 1].green != slot->color[c_done].green || slot->color[i + 1].blue != slot->color[c_done].blue || @@ -498,6 +499,10 @@ if ( error ) break; + /* restore contours */ + for ( j = 0; j < slot->outline.n_contours; j++ ) + slot->outline.contours[j] += p_done; + c_done += slot->outline.n_contours; p_done += slot->outline.n_points; |