Fix simplified emboldened glyphs

Fake bold glyphs are done with a stroke+fill. The stroker creates a
winding stroke path and then appends the fill path. If the fill path was
even-odd this may be incorrect. Outlines in fonts are generally winding,
with a bit for requesting simplification. The Simplify method provided
by pathops generally returns an even-odd outline. For consistency and to
work with stroking, use AsWinding afer simplifying to produce the
simplified glyph path as a winding path.

Bug: https://github.com/flutter/flutter/issues/112546
Bug: b/258350424
Change-Id: Ic88ef10e5371b2f07c15f706d6aad1b8ab39f83c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/587877
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
(cherry picked from commit d6a993798783de60f15c8e978d28d5a3f95fd749)
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/640880
Reviewed-by: Leon Scroggins <scroggo@google.com>
diff --git a/src/ports/SkFontHost_FreeType_common.cpp b/src/ports/SkFontHost_FreeType_common.cpp
index da64ed8..0c5c1cc 100644
--- a/src/ports/SkFontHost_FreeType_common.cpp
+++ b/src/ports/SkFontHost_FreeType_common.cpp
@@ -1739,6 +1739,10 @@
     }
     if (face->glyph->outline.flags & FT_OUTLINE_OVERLAP) {
         Simplify(*path, path);
+        // Simplify will return an even-odd path.
+        // A stroke+fill (for fake bold) may be incorrect for even-odd.
+        // https://github.com/flutter/flutter/issues/112546
+        AsWinding(*path, path);
     }
     return true;
 }