It looks like the Glowforge SVG parser isn’t handling fill-rule style inheritance correctly. With the sample dounut SVG, moving the fill-rule style attribute out of the SVG tag and down to the path tag makes it work just fine in the Glowforge UI and engraving.
Your original which demonstrates the problem (note the fill-rule style is global in the SVG tag):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 960 960" version="1.1" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g transform="matrix(1.33333,0,0,1.33333,0,0)">
<path d="M372.994,78.621C534.775,78.621 665.924,209.77 665.924,371.551C665.924,533.332 534.775,664.48 372.994,664.48C211.214,664.48 80.065,533.331 80.065,371.551C80.065,209.77 211.214,78.621 372.994,78.621ZM372.994,518.015C292.104,518.015 226.53,452.441 226.53,371.551C226.53,290.66 292.104,225.086 372.994,225.086C453.885,225.086 519.459,290.66 519.459,371.551C519.459,452.44 453.885,518.015 372.994,518.015Z" style="fill:#34a5ff;"/>
</g>
</svg>
The modified file which works (evenodd fill-rule style applied to path only):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 960 960" version="1.1" xml:space="preserve" style="clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g transform="matrix(1.33333,0,0,1.33333,0,0)">
<path style="fill-rule:evenodd" d="M372.994,78.621C534.775,78.621 665.924,209.77 665.924,371.551C665.924,533.332 534.775,664.48 372.994,664.48C211.214,664.48 80.065,533.331 80.065,371.551C80.065,209.77 211.214,78.621 372.994,78.621ZM372.994,518.015C292.104,518.015 226.53,452.441 226.53,371.551C226.53,290.66 292.104,225.086 372.994,225.086C453.885,225.086 519.459,290.66 519.459,371.551C519.459,452.44 453.885,518.015 372.994,518.015Z" style="fill:#34a5ff;"/>
</g>
Weirdly, leaving the “evenodd” fill-rule style in the SVG tag and “overriding” it in the path doesn’t work:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 960 960" version="1.1" xml:space="preserve" style="style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g transform="matrix(1.33333,0,0,1.33333,0,0)">
<path style="fill-rule:evenodd" d=…
But changing the fill-rule style in the SVG tag to “non-zero” and overriding it back to “evenodd” in the path tag does work:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:serif="http://www.serif.com/" width="100%" height="100%" viewBox="0 0 960 960" version="1.1" xml:space="preserve" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g transform="matrix(1.33333,0,0,1.33333,0,0)">
<path style="fill-rule:evenodd" d=...
It seems like having style=fillrule:evenodd in the SVG tag causes the parser to lock the fill-rule to nonzero for the rest of the file.