Skip to content
← Changelog

VectorFox 2.0: gradients, and curves that land where you drew them

Version v2.0.0
Date
Type release
Author Andy Miller

VectorFox 2.0 ships the same day as RasterFox 3.0 and shares its redesign: native macOS windows, toolbars and controls throughout, light or dark appearance respected, one vivid magenta accent instead of custom chrome. The more interesting half of this release is underneath, in the tracing itself.

Start with what the preview window was hiding. The old one flattened the SVG to a bitmap once and showed you that, so both sides always looked equally soft and vectorizing appeared to buy you nothing. The SVG pane now re-renders the vector at every zoom level, so zooming in shows crisp curves against the original's honest pixel squares. Side by Side mode puts them in two panes with locked pan and zoom and a minimap in each, and zoom reaches 64x, which is where the difference stops being theoretical.

Gradients, at last

The tracer could only ever fill a shape with one flat color. Anything built from gradients came back banded into stripes or flattened to a single average, and there was no setting that fixed it. Regions whose color genuinely ramps are now filled with a real SVG gradient fitted to the original pixels. An abstract gradient wallpaper that used to trace to a 332 KB mess comes out at 100 KB and actually looks like the source.

Gradients that radiate from a point are recognized as such, so a billiard ball, a glossy button, or anything with spherical shading keeps its highlight and falloff instead of arriving as a flat disc with a diagonal tint across it. And where a smooth ramp gets cut into several bands during tracing, those bands share one gradient rather than each taking a flat color of its own. The cuts are an artifact of how tracing works, not anything in your image, so sharing the gradient across them makes the seams stop showing. The blue field behind the Firefox logo is the example that made this obvious.

Three settings bugs were quietly making everything worse. The Balanced preset was comparing colors at 6 bits per channel instead of 8, which is enough to swallow a gradient whole before tracing even started. Gradient Step in the inspector was limited to a 0 to 10 slider when the tracer accepts up to 255 and defaults to 16, so the entire useful range sat past the right edge. And every preset traced with Gradient Step at 0, which switches the tracer into its most wasteful mode and doubles file sizes without improving accuracy. Balanced and Simplistic were also tracing in polygon mode, reproducing pixel staircases instead of fitting curves. All the built-in presets use spline curve fitting now, which is what vtracer recommends, and logos come out with clean edges rather than vectorized pixels.

Curves that land where you see them

Two fitter bugs had traced edges drifting away from the artwork, worst along a long gentle arc where the line could sit five or six pixels outside the original. Where a run of outline was too curved for one curve to describe, the fitter split it and then threw away everything past the first piece, so most of that run was drawn by a curve never fitted to it. It also only checked its work at the points it was handed, so a sparsely sampled run could be matched by a curve passing exactly through every one of them while swinging wildly in the gaps. Every piece of a split fit is kept now, and the fitter adds its own checkpoints along the way so it can see where it's going.

Traced shapes were also coming out about two pixels larger than their source. Anything with a soft edge is drawn with partly transparent pixels around it, and the tracer counted every one of those as solid, so each shape grew by the width of its own fade. Edges land where you actually see them now, which matters most on logos and icons with transparent backgrounds.

The rest of it

Saved SVGs include a viewBox, so they scale properly in browsers and design tools, and a new Responsive option strips the fixed width and height for fluid embedding. The floating Presets panel became an inspector pane attached to the window edge with two tabs: Trace, holding every vectorization and optimization control in full-size grouped forms, and Info, showing size, path and color counts, the preset used, and before-and-after numbers after each re-trace. Settings gained a Presets pane for creating, duplicating, renaming and deleting custom presets in one place.

Keyboard control runs throughout: ⌘O adds, Space previews, Return opens compare, ⌘R re-vectorizes, ⌘S saves, ⌥⌘I toggles the inspector, ⌥⌘C copies the SVG source, ⌘. cancels. Applying settings shows honest progress with an elapsed counter and a Cancel button that works, and a stuck tracer times out instead of hanging a conversion slot forever. Twenty SVG optimization controls in Settings were never actually read by the optimizer, which is no longer true.

Rows read honestly, too. A photo that traces larger says "19% larger" in quiet gray rather than alarming red, and the totals line says "Total Added" instead of showing a negative saving. Files past the free tier's batch limit stay as rows marked "Requires a license" instead of vanishing, and convert automatically once a license is activated.

VectorFox is $9.99 paid once, and it runs on macOS 14 Sonoma or later, on both Apple silicon and Intel. Get it from the VectorFox page or with Homebrew: brew install --cask skulkworks/tap/vectorfox. Full details are in the changelog.