TinyVG / specification

The specification for TinyVG. This is the central authority for the file system
https://tinyvg.tech/
MIT License
239 stars 6 forks source link

[Proposal] Remove circular/elliptic arcs? #17

Closed neinseg closed 2 years ago

neinseg commented 2 years ago

AFAICT all of these increase implementation complexity while their only advantage is reduced file size. Circular and elliptic arcs can be approximated pixel-accurately (for reasonable pixel dimensions of a curve) using one cubic bezier per quarter-circle. Thus, I think it would be reasonable to convert any incoming circular or elliptic arcs from an SVG to cubics. This could also be done later during rendering, but as far as I understand TinyVG the idea is to front-load some of the rendering complexity (e.g. text) off the renderer and into the converter/output library.

ikskuh commented 2 years ago

This could also be done later during rendering, but as far as I understand TinyVG the idea is to front-load some of the rendering complexity (e.g. text) off the renderer and into the converter/output library.

Yes, but only so much until it effectively hurts the file size. If you have a circle-heavy file, you can get down from 69 byte to 46 when not using beziers (as they are much heavier in encoding than arcs and especially circles). And this is a near 65% reduction in file size.

ikskuh commented 2 years ago

Rejected due to file size increase and that it has to implemented somewhere anyways. Using arc elements is imho very convenient to have.