public enum FillRuleWhich crossings of a scanline count as inside the shape.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
⚠ This is not a preference and the two rules disagree on real input. Where an even number of same-wound contours overlap, non-zero fills the overlap and even-odd punches a hole through it. For a glyph that is always the wrong answer — a script that builds a letter out of stacked strokes comes apart — which is why GlyphRasterizer was non-zero only, deliberately, and says so.
What made it a choice rather than a constant is SVG. fill-rule="evenodd" is a thing a path author writes and means, and doc 48 § 4.1's Svg Path source lists a fill rule among its parameters; a rasteriser that cannot express it would silently draw a different shape from the one in the file. #687 and #753 named exactly this as the blocker, and named the cost — a public option on the only rasteriser in Vixen.Ui.Text, for one editor-side caller.
⚠ That editor-side caller does not exist, and until it does this option is a finished thing nothing calls. Swept over .cs and .vxml on 2026-09-08: the only sites naming EvenOdd anywhere in the tree are three assertions in RasterizerTests. That is not an argument for deleting it — the blocker it removes is real and #753 now carries the measured route to the node — but a reader who assumes an Svg Path node is drawing through this would be wrong, and this repository builds seams ahead of their callers more often than it builds anything else.
⚠ The other blocker those issues name did not survive a re-measure and this is not it. "Referencing SvgPath would put the whole UI framework behind a bake" rested on a closure comparison that is wrong in both columns: Vixen.Ui's project closure is a strict subset of Vixen.Editor.TextureGraph's. What is left of that one is a compile-surface argument about what an evaluator may spell, which is a decision about where the node lives and not about this file.
Fields and properties (2)
NonZeroInside where the sum of signed crossings is not zero. The default, and what a font wants.
EvenOddInside where an odd number of edges have been crossed. What SVG's evenodd means.
Used by (2)
- GlyphRasterizerVixen.Ui.Text
- RasterizerTestsVixen.Ui.Text.Tests