Regarding the Skia artifacts, it seems to be trickier than merely applying the right filling rule.
Have a look at the attached document (it uses the PostScript "fill" operator, which implements the non-zero winding rule; there also exists an "eofill" operator for even-odd filling but the document doesn't use it). In the Skia font, the Ø glyph consists of an exterior ring, an interior ring, and the slash. At width 0.7 and weights all the way up to 1.8, the exterior ring comes in clockwise order; the interior ring is counter-clockwise; and the slash is clockwise. Therefore, the glyph looks as expected when applying the non-zero winding filling rule. However, starting at weight 1.9, the slash suddenly flips its direction, which causes visible artifacts. This continues up to weight 2.2. At weight 2.3, the slash gets moved into the O shape, but because it still has the wrong order, it creates a hole into the O. — At width 0.8, the slash starts flipping its direction at weight 2.1. At width 0.9, the direction flipping happens only at weight 2.3.
Not sure if this is due to a bug in the Skia font, or due to a bug in MacOS's handling of 'gvar' tables. But if FreeType doesn't run into the problem, it smells more like a MacOS problem.