diff options
Diffstat (limited to 'tools/svg/_clean_style_attr.sed')
-rw-r--r-- | tools/svg/_clean_style_attr.sed | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/tools/svg/_clean_style_attr.sed b/tools/svg/_clean_style_attr.sed deleted file mode 100644 index 85483a510..000000000 --- a/tools/svg/_clean_style_attr.sed +++ /dev/null @@ -1,217 +0,0 @@ -#!/bin/sed -rf -# -# Written in 2016 by Sergei Eremenko <https://github.com/SmartFinn> -# -# To the extent possible under law, the author(s) have dedicated all copyright -# and related and neighboring rights to this software to the public domain -# worldwide. This software is distributed without any warranty. -# -# You should have received a copy of the CC0 Public Domain Dedication along -# with this software. If not, see -# <http://creativecommons.org/publicdomain/zero/1.0/>. -# -# Description: -# This script removes unused properties and removes properties with default -# values from style attributes. -# Details https://www.w3.org/TR/SVG/styling.html -# -# Get CSS defaults from Inkscape: -# sed -e '/^$/d' -e '/NO.DEFAULT/d' -e 's/"//g' \ -# /usr/share/inkscape/attributes/css_defaults \ -# | awk -F" - " '{printf "s/%s:%s;//gI\n", $1,$2}' -# -# Usage: -# sed -r -i -f _clean_style_attr.sed FILE... - -/style=/ { - - # add a trailing semicolon for secure matching - s/style="([^"]+[^;])"/style="\1;"/gI - - # delete properties with default values - s/alignment-baseline:auto;//gI - s/backface-visibility:visible;//gI - s/baseline-shift:baseline;//gI - s/block-progression:tb;//gI - s/clip:auto;//gI - s/clip-path:none;//gI - s/clip-rule:nonzero;//gI - s/color-interpolation:sRGB;//gI - s/color-interpolation-filters:linearRGB;//gI - s/color-profile:auto;//gI - s/color-rendering:auto;//gI - s/cursor:auto;//gI - s/direction:ltr;//gI - s/display:inline;//gI - s/dominant-baseline:auto;//gI - s/enable-background:accumulate;//gI - s/fill:black;//gI - s/fill-opacity:1;//gI - s/fill-rule:nonzero;//gI - s/filter:none;//gI - s/flood-color:black;//gI - s/flood-opacity:1;//gI - s/font-feature-settings:normal;//gI - s/font-size:medium;//gI - s/font-size-adjust:none;//gI - s/font-stretch:normal;//gI - s/font-style:normal;//gI - s/font-variant:normal;//gI - s/font-variant-alternates:normal;//gI - s/font-variant-caps:normal;//gI - s/font-variant-east-asian:normal;//gI - s/font-variant-ligatures:normal;//gI - s/font-variant-numeric:normal;//gI - s/font-variant-position:normal;//gI - s/font-weight:normal;//gI - s/glyph-orientation-horizontal:0deg;//gI - s/glyph-orientation-vertical:auto;//gI - s/image-rendering:auto;//gI - s/isolation:auto;//gI - s/kerning:auto;//gI - s/letter-spacing:normal;//gI - s/lighting-color:white;//gI - s/marker:none;//gI - s/marker-end:none;//gI - s/marker-mid:none;//gI - s/marker-start:none;//gI - s/mask:none;//gI - s/mix-blend-mode:normal;//gI - s/([^-])opacity:1;/\1/gI - s/overflow:hidden;//gI - s/paint-order:normal;//gI - s/perspective:none;//gI - s/pointer-events:visiblePainted;//gI - s/shape-inside:auto;//gI - s/shape-margin:0;//gI - s/shape-outside:auto;//gI - s/shape-padding:none;//gI - s/shape-rendering:auto;//gI - s/solid-color:#000000;//gI - s/solid-opacity:1;//gI - s/stop-color:black;//gI - s/stop-opacity:1;//gI - s/stroke:none;//gI - s/stroke-dasharray:none;//gI - s/stroke-dashoffset:0;//gI - s/stroke-linecap:butt;//gI - s/stroke-linejoin:miter;//gI - s/stroke-miterlimit:4;//gI - s/stroke-opacity:1;//gI - s/stroke-width:1;//gI - s/text-align:start;//gI - s/text-anchor:start;//gI - s/text-decoration-line:none;//gI - s/text-decoration-style:solid;//gI - s/text-decoration:none;//gI - s/text-indent:0;//gI - s/text-orientation:mixed;//gI - s/text-rendering:auto;//gI - s/text-transform:none;//gI - s/transform:none;//gI - s/transform-style:flat;//gI - s/unicode-bidi:normal;//gI - s/vector-effect:none;//gI - s/visibility:visible;//gI - s/white-space:normal;//gI - s/word-spacing:normal;//gI - s/writing-mode:lr-tb;//gI - - # delete properties with nonsense values - s/fill-opacity:[1-9][0-9.]*;//gI - s/font-family:(sans|sans-serif);//gI - s/line-height:normal;//gI - s/([^-])opacity:[1-9][0-9.]*;/\1/gI - s/overflow:visible;//gI - s/shape-padding:0;//gI - s/solid-color:(#000|#000000|black);//gI - s/solid-opacity:[1-9][0-9.]*;//gI - s/stroke-opacity:[1-9][0-9.]*;//gI - s/text-decoration-color:(#000|#000000|black|currentColor);//gI - - # delete Inkscape properties - /-inkscape-/ { - s/-inkscape-[^;"]+;//gI - } - - # delete 'fill- *' properties if fill equal none - /fill[:=]"?none/ { - s/fill-rule:[^;"]+;//gI - s/fill-opacity:[^;"]+;//gI - } - - # delete a fill property if it has the default value and fill attribute not exist - /fill="[^"]/! { - s/fill:(#000|#000000|black);//gI - } - - # delete a color property if currentColor not exists and fill has a value - /currentColor/! { - s/([^-])color:[^;"]+;/\1/gI - } - - # delete 'stroke- *' properties if an object doesn't have a stroke - /stroke[:=]/! { - s/stroke-width:[^;"]+;//gI - s/stroke-linecap:[^;"]+;//gI - s/stroke-linejoin:[^;"]+;//gI - s/stroke-miterlimit:[^;"]+;//gI - s/stroke-dasharray:[^;"]+;//gI - s/stroke-dashoffset:[^;"]+;//gI - s/stroke-opacity:[^;"]+;//gI - } - - # delete unused properties from non-container elements - /<(a|defs|glyph|g|marker|mask|missing-glyph|pattern|svg|switch|symbol|use)/! { - s/enable-background:[^;"]+;//gI - } - - # delete unused properties from non-text content elements - /<(altGlyph|textPath|text|tref|tspan|flowRoot|flowPara|flowSpan|a|defs|glyph|g|marker|mask|missing-glyph|pattern|svg|switch|symbol|use)/! { - s/alignment-baseline:[^;"]+;//gI - s/baseline-shift:[^;"]+;//gI - s/block-progression:[^;"]+;//gI - s/direction:[^;"]+;//gI - s/dominant-baseline:[^;"]+;//gI - s/font:[^;"]+;//gI - s/font-family:[^;"]+;//gI - s/font-feature-settings:[^;"]+;//gI - s/font-size-adjust:[^;"]+;//gI - s/font-size:[^;"]+;//gI - s/font-stretch:[^;"]+;//gI - s/font-style:[^;"]+;//gI - s/font-variant-alternates:[^;"]+;//gI - s/font-variant-caps:[^;"]+;//gI - s/font-variant-ligatures:[^;"]+;//gI - s/font-variant-numeric:[^;"]+;//gI - s/font-variant-position:[^;"]+;//gI - s/font-variant:[^;"]+;//gI - s/font-weight:[^;"]+;//gI - s/glyph-orientation-horizontal:[^;"]+;//gI - s/glyph-orientation-vertical:[^;"]+;//gI - s/kerning:[^;"]+;//gI - s/letter-spacing:[^;"]+;//gI - s/line-height:[^;"]+;//gI - s/text-align:[^;"]+;//gI - s/text-anchor:[^;"]+;//gI - s/text-decoration-color:[^;"]+;//gI - s/text-decoration-line:[^;"]+;//gI - s/text-decoration-style:[^;"]+;//gI - s/text-decoration:[^;"]+;//gI - s/text-indent:[^;"]+;//gI - s/text-orientation:[^;"]+;//gI - s/text-transform:[^;"]+;//gI - s/unicode-bidi:[^;"]+;//gI - s/word-spacing:[^;"]+;//gI - s/writing-mode:[^;"]+;//gI - } - - # replace 2 and more semicolons by one - s/;{2,}/;/g - - # delete trailing semicolon - s/;+"/"/g - - # delete style attribute if it's empty - s/[[:space:]]?style=""//g -} |