aboutsummaryrefslogtreecommitdiff
path: root/tools/svg/_clean_style_attr.sed
diff options
context:
space:
mode:
Diffstat (limited to 'tools/svg/_clean_style_attr.sed')
-rw-r--r--tools/svg/_clean_style_attr.sed217
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
-}