We have tried to make the output options as self-explanatory as possible, but here are all the gory details:
The vector images we produce are made up of shapes, which are made up of non-self-intersecting loops. Loops are sequences of curves where each curve starts where the last one leaves off, and where the last curve ends where the first one started. We produce lines, circular & elliptical arcs, and quadratic & cubic Bézier curves.
Shapes always have exactly one 'positive' loop, which defines the area that should be filled by the shape's color. In some cases, shapes may also have 'negative' loops, which represent cut-outs that should not be filled with the shape's color. Negative loops must be fully enclosed by the shape's positive loop and must not touch each other.
For input images that contain line drawings or other stroked geometry, such as CAD drawings, charts, technical diagrams, and the like, it is natural to expect that we would produce stroked geometry as output. This style of vectorizing is called a centerline tracing. We do not currently support centerline tracing, so all stroked geometry gets represented as narrow filled shapes.
Please note that the Stroke Style section is for styling the strokes of the paths that make up the filled shapes. It is unrelated to centerline tracing.
When two shapes in a vector image are right next to each other such that their boundaries are exactly coincident, many vector rendering engines will nevertheless draw them in such a way that a narrow white line shows through between them. This is a defect in those rendering engines, but one that is so common that it does not appear to be going away any time soon.
We have designed what we are calling the Gap Filler to work around this problem. It works by drawing a narrow line underneath the boundary between the two shapes and with a color that is the average of the shapes' two colors. This prevents the background from showing through and effectively solves the problem.
Strokes that are drawn at a constant width regardless of the zoom level are called non-scaling strokes. This feature has full support in SVG and our PNG vector rasterizer, and partial support in EPS, PDF, and DXF.
SVG supports arbitrary non-scaling stroke widths and enjoys widespread support among SVG viewers and editors except Adobe Illustrator, where the non-scaling style is ignored and the stroke scales with the zoom level. Our PNG vector rasterizer also has full support for non-scaling strokes.
Both EPS and PDF only support non-scaling strokes of an unspecified minimal display width, which is generally understood to be a pixel wide or narrower. Adobe officially discourages their use and tests with Illustrator 2023 show significant defects in their handling of this styling.
DXF also supports non-scaling strokes of a minimum display width, and this is a very common stroke style in DXF files.
In general we recommend using non-scaling strokes only for SVG, DXF and PNG.
Vector Images consist of shapes that are drawn in a particular order, usually the order in which they appear in the file defining the vector image.
Some shapes can have their draw order changed without altering the appearance of the vector image. For example, consider two separate dots on a rectangle. The rectangle must be drawn before the dots, but either dot can be drawn before the other without affecting the appearance of the vector image.
Any such set of shapes whose internal reordering does not alter the appearance of the image can be on the same Layer. The Layers must be drawn in order, but the shapes within a Layer can be reordered or put into groups without changing the appearance of the image.
We support a variety of export file formats, but not all formats support all features.
SVG 1.1 is by far the most common version of SVG in use, but for the purposes of our output files, it only differs from SVG 1.0 in its header.
Neither of them formally support non-scaling strokes, which were introduced in SVG Tiny 1.2 and are part of the as yet unreleased SVG 2.0 specification. In practice, non-scaling strokes are supported in most major viewers and editors, so we allow them in all of our SVG output.
Encapsulated Postscript (EPS) is a legacy format created by Adobe and primarily used for printing. It lacks support for grouping and transparency, and has limited support for non-scaling strokes.
We currently export EPS version 3, which is the most common version in use.
Adobe's Portable Document Format (PDF) is primarily used as an interchange format for documents, but also contains a reasonably full-featured vector graphics capability. PDF does not support grouping and has limited support for non-scaling strokes.
We export PDF version 1.4, the earliest version that supports transparency.
AutoCAD's Drawing Exchange Format (DXF) is a widely used CAD interchange file format. While the DXF specification supports layers (groups), and all available curve types, support among DXF readers varies considerably.
We export DXF version AC1021 (2007).
Portable Network Graphics (PNG) is a raster image format that supports transparency. PNG is a bitmap format, not a vector format, but we support exporting to it because it is so commonly used for the kind of images that we produce.
Right now, we do not support arbitrary scaling factors. The PNG output we produce is exactly 4x as wide and tall as the input image, up to a cap of 4 megapixels. These limitations will be removed in the future.
The vectorization process produces a set of paths that define the shapes present in the image. It is most natural to fill those shapes with their respective colors such that the resulting image looks much the same as the bitmap input, but with sharper boundaries and the ability to be scaled without degradation.
But some applications are more interested in the paths themselves, in which case it might make more sense to stroke the shapes, or the boundaries between the shapes.
Stroke all of the shape's curves exactly as if you were filling them, but with a draw style defined by the Stroke Style rather than the implicit fill style.
If two shapes touch, the edge between them will be stroked twice: once for each shape.
Cut-outs always produce two strokes per edge. Stacked shapes produce one stroke between a shape and those fully contained by it, and two strokes between neighboring shapes where neither contains the other.
Stroke all the edges between shapes once.
In contrast to Stroke Shapes, which typically strokes each edge twice (once for each flanking shape), this Draw Style strokes each edge between shapes only once.
This is useful for laser engraving, vinyl cutting, and the like.
The shapes of a vector image can be thought of as being either stacked on top of each other, or as being cut out of each other. We can produce either kind.
Place shapes in cut-outs in the shapes below. This means that all the shapes form a single layer, with no shape being on top of another.
This simplifies the Gap Filler feature because it allows all the Gap Filler strokes to be placed in a single layer below all the shapes. However, more Gap Filler strokes will be necessary since they're needed when shapes are next to each other and touching, as opposed to when one shape is on top of another.
It also causes a larger file because the curves specifying the cut-outs must be included.
Depending on the image and your preferences, this may also make it easier or harder to edit the result in a vector editor. In particular, cut-outs make it easier to separate one component of the image from another because the visual shape of each component does not rely on any other component that might be stacked on top of it. Conversely, if the intention is to keep all the parts of the image together, cut-outs make it harder to edit the precise shape of a component because editing a shape will require making corresponding edits to the cut-out in which it sits.
Place shapes on top of each other. Think of a multi-layered cake where the smaller tiers are stacked on top of the larger ones.
This option typically minimizes the file size and the number of Gap Filler strokes. But it complicates the Gap Filler feature because the Gap Filler strokes must be interleaved between the shapes for which they are needed and the shape that contains them. This has the additional side effect of sometimes causing little bits of the Gap Filler strokes to stick out beyond the shapes for which they are intended. We can solve this problem by using non-scaling strokes, or by clipping the Gap Filler strokes. We recommend using non-scaling strokes whenever possible.
Stacked shapes also makes editing the boundary between a shape and the shape below it easier, because that boundary is not duplicated in the cut-out. But it can make it harder to separate out one component of the image, since the visual appearance of each shape depends on the shapes that are stacked on top of it.
Vector file formats such as SVG support collecting multiple shapes into groups. Such groups are primarily useful for organizational purposes and to facilitate easier editing, by allowing changes to all shapes within a group to be made at once.
SVG has full support for groups. Neither EPS nor PDF support groups. DXF supports layers, which are similar to groups.
This section controls how shapes are grouped together.
Group shapes by the color of their fill.
When the Shape Stacking mode is Cut-outs, all the shapes of a given color will form a single group.
When the Shape Stacking mode is Stacked, it is usually not possible to group all shapes of a given color together, as all parts of a group must occupy the same position in the vector image's draw order. For this reason, in Stacked images, we group only the shapes of a given color that occupy the same Layer together.
Group together all shapes that have the same parent.
If a shape is fully contained by another shape, then we consider the outer shape to be the Parent of the inner shape. All shapes that are not fully contained by another shape have the vector image itself as parent and are grouped together.
Group shapes together according to their draw order Layer.
Draw order Layers are groups of shapes whose internal draw order can be freely reordered without altering the appearance of the image.
We support special identification of certain parameterized shapes such as circles, ellipses, rectangles, isosceles triangles, and stars, all with arbitrary rotation angles and corner radii. Fitting these common shapes produces shapes with perfect geometry and consistent treatment of the corners. Some export formats have native support for some of these shapes, and we take advantage of that to make the resulting files easier to edit.
We offer fine-grained control over which types of curves may be exported. Each file format and some other options also have their own restrictions on which curve types are allowed, and the most restrictive options are always used.
Supported by SVG, DXF, and our PNG vector rasterizer, Quadratic Bézier Curves are defined by two endpoints and a single control point. The curve's tangent direction at an endpoint is always parallel to the line connecting that endpoint to the control point.
If Quadratic Bézier Curves are disabled, we fall back on Cubic Bézier Curves, Elliptical Arcs, and Lines, in that order.
Supported by all export formats, Cubic Bézier Curves are defined by two endpoints and two control points. The curve's tangent direction at an endpoint is always parallel to the line connecting that endpoint to its corresponding control point.
If Cubic Bézier Curves are disabled, we fall back on Lines.
Supported by SVG, DXF, and our PNG vector rasterizer, Circular Arcs are defined by a center, a radius, a start angle, and a sweep angle.
If Circular Arcs are disabled, we fall back on Elliptical Arcs, Cubic Bézier Curves, and Lines, in that order.
Supported by SVG, DXF, and our PNG vector rasterizer, Elliptical Arcs are defined by a center, major and minor axes, a rotation angle, a start angle, and a sweep angle.
If Elliptical Arcs are disabled, we fall back on Cubic Bézier Curves, and Lines, in that order.
In the event that any curves must be converted to one or more line segments, this section offers control over the quality of the fit.
As noted above, a nearly ubiquitous defect in vector image rasterization engines is that the background color is allowed to show through between shapes that touch each other, even when no actual gap exists in the underlying geometry. We have developed a technique that we call Gap Filling that can be used to fill in these gaps by placing small strokes behind and between touching shapes with a color equal to the average color the two shapes in question.
When the Draw Style is set to Stroke Shapes or Stroke Edges, this section controls the style of the strokes.