Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unknown attribute cleaning. #300

Open
kevincox opened this issue Jun 20, 2022 · 3 comments
Open

Unknown attribute cleaning. #300

kevincox opened this issue Jun 20, 2022 · 3 comments

Comments

@kevincox
Copy link

It would be useful to have an option to remove attributes that aren't part of the SVG spec as they are added by many tools and editors.

Possible configurations would be:

  1. Remove anything not part of the SVG specs.
  2. Remove anything matching a pattern (ex: data-.*)
  3. Remove a specific list of attributes.
@JoKalliauer
Copy link

@kevincox

  1. Is implemented in (i) for SVG1.1: https://github.com/RazrFalcon/svgcleaner/ --remove-nonsvg-attributes yes --remove-nonsvg-elements yes or (ii) for SVG2.0 simplification: https://github.com/RazrFalcon/resvg/tree/master/usvg or (iii) for file-size-reduction: https://github.com/svg/svgo or (iv) if you just want default settings: https://vecta.io/nano
  2. (a) Use a basic texteditor or (b) since data-* is not part of SVG1.1 specs, it would get removed in https://github.com/RazrFalcon/svgcleaner/ or (c) since it does not influence rendering https://github.com/RazrFalcon/resvg/tree/master/usvg will remove it.
  3. E.g. if you would like to remove all SystemLanguage=", search for this attribute in a texteditor and replace it by e.g. SystemLanguageDELETE=", then apply https://github.com/RazrFalcon/svgcleaner/ or https://github.com/RazrFalcon/resvg/tree/master/usvg and everything unknown is removed.

I think all three options might be dangerous breaking specific SVG-files. The first for example needs to know which element may have which attributes. e.g. writing-mode= is allowed in <text but not in <tspan , however most renderer (Chromium, Firefox, librsvg,...) apply it even if it is in tspan. Or flowRoot of SVG1.2, which is used by Inkscape, is not in SVG1.1 nor will it be in SVG2.0. So removing everything unknown is a SVG-version-dependent question.

Why do you want those features? Validating of the file? Reduction of File-size? Better source-code-readable? No private metadata? Reducing of rendering-errors? (Maybe provide an example, with input and desired output.)

@Developers: Sorry for pointing user to competitors, but I'm also recommending scour in other projects. Scour is imho the one with fewest bugs. I try to help Users with their problems.

@kevincox
Copy link
Author

I think all three options might be dangerous breaking specific SVG-files.

It can be opt-in. For some people the risk of breakage is worth it.

however most renderer .. apply it even if it is in tspan

For cases like this I would recommend that option 1 from the original request keeps them as "defacto standards". But I'm not too bothered either way.

Why do you want those features?

For me I want reduction of file-size and no private metadata.

@JoKalliauer
Copy link

It can be opt-in. For some people the risk of breakage is worth it.

I agree on that (implementing unstable beta-featurs as opt-in), however developers generally don't implement it. Maybe because that will lead to many bug-reports. And your feature-request is imho not something easy to implement.

For me I want reduction of file-size and no private metadata.

Scour is imho more the conservative approach if you want to minimize file-size I recommend to use
-https://github.com/RazrFalcon/svgcleaner/
-https://github.com/svg/svgo or https://jakearchibald.github.io/svgomg/
serial.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants