Difference between revisions of "User:Tsingi"
Line 22: | Line 22: | ||
* '''''Clean up XML Elements''''' | * '''''Clean up XML Elements''''' | ||
** '''''Collapse multiple redundant groups''''' | ** '''''Collapse multiple redundant groups''''' | ||
'''Not done, easy, | '''Not done, easy, low priority'''. | ||
** '''''Remove empty tags, such as defs or metadata.''''' | ** '''''Remove empty tags, such as defs or metadata.''''' | ||
'''Not done, easy, | '''Not done, easy, low priority'''. | ||
** '''''Remove id tags for elements not referenced''''' | ** '''''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''' | '''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''' | ||
Line 35: | Line 35: | ||
* '''''Clean up CSS''''' | * '''''Clean up CSS''''' | ||
** '''''Remove Default values, i.e. opacity: 1;''''' | ** '''''Remove Default values, i.e. opacity: 1;''''' | ||
'''DONE''' | |||
** '''''Remove Not applicable values, i.e. opacity: 0; fill-color: #00000;''''' | ** '''''Remove Not applicable values, i.e. opacity: 0; fill-color: #00000;''''' | ||
Not sure what is meant here. | |||
** '''''Convert RGB colours from RGB(r,g,b) to #RRGGBB format''''' | ** '''''Convert RGB colours from RGB(r,g,b) to #RRGGBB format''''' | ||
'''Not done, easy, med priority''' I convert everything to rgb(...), can do this too. | |||
** '''''Convert RGB colours from #RRGGBB to #RGB if possible''''' | ** '''''Convert RGB colours from #RRGGBB to #RGB if possible''''' | ||
'''Not done, easy, med priority''' | |||
* '''''Clean up paths''''' | * '''''Clean up paths''''' | ||
'''DONE''' What isn't mentioned here, and is fully implemented in islint, is recovering, circles, ellipses, lines, polylines and polygons. islint parses 'd' attributes into path segments, analyzes them and then puts them back together being very stingy with white space. A lot of work was done for this, so the code is in good shape for further reduction operations on paths. | |||
** '''''Detect vertical/horizontal lines and replace.''''' | ** '''''Detect vertical/horizontal lines and replace.''''' | ||
'''Not done, easy, high priority''' | |||
** '''''Eliminate empty path segments''''' | ** '''''Eliminate empty path segments''''' | ||
'''Not done, easy, high priority''' | |||
** '''''Eliminate last segment in a polygon''''' | ** '''''Eliminate last segment in a polygon''''' | ||
'''Not done, easy, high priority''' | |||
** '''''Collapse straight curves.''''' | ** '''''Collapse straight curves.''''' | ||
'''Not done, ???, med priority''' | |||
** '''''Convert absolute path segments to relative ones.''''' | ** '''''Convert absolute path segments to relative ones.''''' | ||
'''Not done, easy, high priority''' | |||
* '''''Process Transformations''''' | * '''''Process Transformations''''' | ||
Do not understand these points, process Beziers how? Collapse transforms how? | |||
** '''''Process quadratic Bezier curves''''' | ** '''''Process quadratic Bezier curves''''' | ||
** '''''Collapse all group based transformations''''' | ** '''''Collapse all group based transformations''''' |
Revision as of 10:55, 24 September 2009
I've started contributing to InkScape in my own way, I have made a dent on a filter to sanitize InkScape.
- Wiki profiler page: Save_Cleaned_SVG
- islint at SourceForge
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;
DONE
- Remove Not applicable values, i.e. opacity: 0; fill-color: #00000;
Not sure what is meant here.
- Convert RGB colours from RGB(r,g,b) to #RRGGBB format
Not done, easy, med priority I convert everything to rgb(...), can do this too.
- Convert RGB colours from #RRGGBB to #RGB if possible
Not done, easy, med priority
- Clean up paths
DONE What isn't mentioned here, and is fully implemented in islint, is recovering, circles, ellipses, lines, polylines and polygons. islint parses 'd' attributes into path segments, analyzes them and then puts them back together being very stingy with white space. A lot of work was done for this, so the code is in good shape for further reduction operations on paths.
- Detect vertical/horizontal lines and replace.
Not done, easy, high priority
- Eliminate empty path segments
Not done, easy, high priority
- Eliminate last segment in a polygon
Not done, easy, high priority
- Collapse straight curves.
Not done, ???, med priority
- Convert absolute path segments to relative ones.
Not done, easy, high priority
- Process Transformations
Do not understand these points, process Beziers how? Collapse transforms how?
- 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