User:Tsingi

From Inkscape Wiki
Revision as of 10:38, 24 September 2009 by Tsingi (talk | contribs)
Jump to navigation Jump to search

I've started contributing to InkScape in my own way, I have made a dent on a filter to sanitize InkScape.

My motives are purely selfish. I'm one of the authors of SVG, I work with SVG, and I find InkScape to be an excellent tool, but I spend a lot of time editing InkScape output with vi to clean it up for use in dynamic web apps (mostly). A task with very low entertainment value. Writing filters is more fun.

islint is pretty useful to me as is now, it has a way to go before it will serve as a general filter for InkScape.

This is the wrong place to do this, but it will serve for now...

islint

Wiki Notes Annotated

In italics is a copy of the Cleaning Operations list from the Save_Cleaned_SVG page

Notes are formatted like this. Status, difficulty, priority like this

  • Specify a limit to the precision of all positional elements.

DONE trimming precision was my first priority. precision can be set to -1 (off) or 0..9. islint gives an extra decimal to transformation floats, so if you set prec=1, a matrix will have values to two decimal places. This is to preserve a little sanity at a low cost should there be nested transforms.

  • Clean up XML Elements
    • Collapse multiple redundant groups

Not done, easy, Low priority.

    • Remove empty tags, such as defs or metadata.

Not done, easy, Low priority.

    • Remove id tags for elements not referenced

Not done, easy I like to have an id on everything. I usually want something more useful than path1234, but that requires either human intervention, or a targeted generator. I can add it as an option, low priority

  • Clean up Definitions

Not done, moderate, low priority Generally I think this section needs a bit of work. I don't use InkScape for gradients at all, but I could. InkScape creates a lot of gradients and creates and references linear gradients when it needs a radial gradient. It should be possible to do a lot of cleanup here.

    • Remove unused definitions
    • Remove duplicate gradient stops
    • Collapse duplicate gradient definitions
    • Remove gradients that are only referenced by one other gradient
  • Clean up CSS
    • Remove Default values, i.e. opacity: 1;
    • Remove Not applicable values, i.e. opacity: 0; fill-color: #00000;
    • Convert RGB colours from RGB(r,g,b) to #RRGGBB format
    • Convert RGB colours from #RRGGBB to #RGB if possible
  • Clean up paths
    • Detect vertical/horizontal lines and replace.
    • Eliminate empty path segments
    • Eliminate last segment in a polygon
    • Collapse straight curves.
    • Convert absolute path segments to relative ones.
  • Process Transformations
    • Process quadratic Bezier curves
    • Collapse all group based transformations
  • Convert known properties to element attributes
    • css to element attributes
  • Output Standard SVG
    • Remove inkscape namespace
    • Remove sodipodi namespace
    • Remove adobe namespace
    • Use viewPort instead of document width/height