From 7b53cc6731a74efe81f467f11aee674cff0fa44f Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 27 Mar 2020 14:50:02 -0700 Subject: [PATCH] Close all subpaths right before filling them. Closes #269. --- content/src/outline.rs | 5 +++++ renderer/src/scene.rs | 2 ++ 2 files changed, 7 insertions(+) diff --git a/content/src/outline.rs b/content/src/outline.rs index 659e5f6c..74a20df2 100644 --- a/content/src/outline.rs +++ b/content/src/outline.rs @@ -226,6 +226,11 @@ impl Outline { self.push_contour(ContourRectClipper::new(clip_rect, contour).clip()); } } + + #[inline] + pub fn close_all_contours(&mut self) { + self.contours.iter_mut().for_each(|contour| contour.close()); + } } impl Debug for Outline { diff --git a/renderer/src/scene.rs b/renderer/src/scene.rs index d33451cf..16949855 100644 --- a/renderer/src/scene.rs +++ b/renderer/src/scene.rs @@ -138,6 +138,7 @@ impl Scene { outline = Outline::new(); } else { outline = (*original_outline).clone(); + outline.close_all_contours(); outline.clip_against_polygon(clip_polygon); outline.apply_perspective(perspective); @@ -147,6 +148,7 @@ impl Scene { _ => { // TODO(pcwalton): Short circuit. outline = (*original_outline).clone(); + outline.close_all_contours(); if options.transform.is_2d() || options.subpixel_aa_enabled { let mut transform = match options.transform { PreparedRenderTransform::Transform2D(transform) => transform,