SvgAttributeCollectionSvg.Custom override of the upstream attribute collection. The upstream implementation returns the exact same deferred paint server instance when an inheritable property such as fill="currentColor" flows from a parent element to a child. That is usually fine for concrete colors, but it breaks once the deferred server has cached the parent's computed color: descendants that override color keep rendering with the parent's color instead of resolving currentColor for themselves. We keep the original inheritance logic intact and only clone inherited deferred currentColor paint servers. Direct properties, such as filter primitives with lighting-color="currentColor", still resolve against the element that declared the property, while inherited paint still gets a fresh per-consumer resolution context.
SvgDeferredPaintServerA wrapper for a paint server which isn't defined currently in the parse process, but should be defined by the time the image needs to render. Compared to the original upstream file, this Svg.Custom override keeps track of the document that originally parsed the deferred paint server. The upstream implementation resolved deferred url(...) paint servers through styleOwner.OwnerDocument only, which is fine for direct rendering but breaks our retained-scene expansion of external/internal <use> content because referenced elements are temporarily reparented to inherit local styles. When that happens, the style owner can point at a different document than the one that actually declared the gradient or pattern. This override mirrors the old submodule fix from Svg.Custom instead: it captures the source document during parsing, prefers that document during deferred resolution, and preserves it across deep copies so the original paint server lookup stays stable.
SvgDocumentSvg.Custom exposes the URI-based lookup surface that the SVG sources already implement internally via SvgElementIdManager. The original submodule-side fix added these overloads directly to SvgDocument so retained-scene code could resolve references like file.svg#id without falling back to string-only lookups. Keeping the overloads in a partial class preserves the same forwarding behavior while avoiding a public-API delta in the externals/SVG checkout.
SvgDocumentCompatibilityLoaderBrowser-compatibility focused loader for Svg.Custom. The upstream loader is good enough for basic SVG parsing, but the Chrome-backed W3C rows showed two loader-specific gaps that matter before CSS can be applied correctly: 1. relative stylesheet references need a stable document base URI, even when the SVG is opened through the convenience API and CSS is applied after parsing; 2. the XML/tree-loading path needs to preserve the raw stylesheet text so the stricter browser-compatibility CSS pass can run after the document model is built. This class keeps the upstream XML tree construction shape and delegates the Chrome-aligned CSS policy to Svg.SvgCssCompatibilityProcessor once the raw style sources have been collected.
SvgForeignObjectThe 'foreignObject' element allows for inclusion of a foreign namespace which has its graphical content drawn by a different user agent
SvgFragmentAn SvgFragment represents an SVG fragment that can be the root element or an embedded fragment of an SVG document.
SvgGradientServerSvg.Custom copy of the upstream gradient server base class. The original implementation delegates stop-color and stop-opacity to the generic attribute inheritance machinery. That is normally fine, but W3C gradients such as pservers-grad-18-b rely on two SVG-specific edge cases: - stop-color="inherit" on a child stop must resolve through the parent gradient's computed stop color, which differs from simply scanning for any ancestor value. - stop-opacity="inherit" must follow the same parent-computed rule even when the keyword survives only as a raw presentation attribute. - Neither property should fall back through xlink:href; resvg fixtures such as e-stop-018 expect referenced gradients to keep the initial stop defaults unless the referenced gradient explicitly authors a stop value of its own. Upstream stores inherit for paint servers as the shared Inherit sentinel, which generic code can misread as a concrete black color. This local copy keeps the rest of the upstream behavior intact, but routes the stop getters through Svg.SvgStopInheritanceResolver so Svg.Skia follows the same inheritance chain Chrome does, without carrying a permanent submodule patch.
SvgGradientStopSvg.Custom copy of the upstream gradient stop element. The original stop getters rely on the generic inherited-attribute path. That path loses the distinction between the SVG keyword inherit and the shared Inherit sentinel, which turns inherited stop colors into an accidental black color in cases like pservers-grad-18-b. It also misses stop-opacity="inherit" when the parser had to keep the raw string form. This local copy keeps the public API and parse behavior identical to upstream, but resolves stop inheritance through Svg.SvgStopInheritanceResolver so Svg.Skia can honor the same Chrome/W3C semantics without modifying the vendored SVG submodule.
SvgPatternServerA pattern is used to fill or stroke an object using a pre-defined graphic object which can be replicated ("tiled") at fixed intervals in x and y to cover the areas to be painted.
SvgSwitchThe 'switch' element evaluates the 'requiredFeatures', 'requiredExtensions' and 'systemLanguage' attributes on its direct child elements in order, and then processes and renders the first child for which these attributes evaluate to true
SvgUnitRepresents a unit in an Scalable Vector Graphics document.
SvgViewBoxIt is often desirable to specify that a given set of graphics stretch to fit a particular container element. The viewBox attribute provides this capability.
SvgClipRuleIndicates the algorithm which is to be used to determine the clipping region.
SvgCoordinateUnitsDefines the various coordinate units certain SVG elements may use.
SvgDominantBaselineSpecifies the dominant baseline, which is used to align the baseline of the text content relative to the dominant baseline of the parent element.
SvgFontStretchThe desired amount of condensing or expansion in the glyphs used to render the text.
SvgFontStyleThis is the descriptor for the style of a font and takes the same values as the 'font-style' property, except that a comma-separated list is permitted.
SvgFontWeightThe weight of a face relative to others in the same font family.
SvgGradientSpreadMethodIndicates what happens if the gradient starts or ends inside the bounds of the target rectangle.
SvgImageRenderingThe image-rendering attribute provides a hint to the browser about how to make speed vs. quality tradeoffs as it performs image processing.
SvgOverflowThe ‘overflow’ property applies to elements that establish new viewports (e.g., ‘svg’ elements), ‘pattern’ elements and ‘marker’ elements. For all other elements, the property has no effect (i.e., a clipping rectangle is not created).
SvgShapeRenderingThe creator of SVG content might want to provide a hint about what tradeoffs to make as the browser renders 'path' element or basic shapes. The shape-rendering attribute provides these hints.
SvgStrokeLineCapSpecifies the shape to be used at the end of open subpaths when they are stroked.
SvgStrokeLineJoinSpecifies the shape to be used at the corners of paths or basic shapes when they are stroked.
SvgTextAnchorText anchor is used to align (start-, middle- or end-alignment) a string of text relative to a given point.
SvgTextDecorationThis property describes decorations that are added to the text of an element. Conforming SVG Viewers are not required to support the blink value.
SvgTextLengthAdjustIndicates the type of adjustments which the user agent shall make to make the rendered length of the text match the value specified on the ‘textLength’ attribute.
SvgTextPathMethodIndicates the method by which text should be rendered along the path.
SvgTextPathSpacingIndicates how the user agent should determine the spacing between glyphs that are to be rendered along a path.
SvgTextRenderingThe creator of SVG content might want to provide a hint about what tradeoffs to make as the browser renders text. The text-rendering attribute provides these hints.
SvgTextTransformationThis property describes transformations that are added to the text of an element.