diff --git a/.svgo b/.svgo index afda8b80..9f173811 100644 --- a/.svgo +++ b/.svgo @@ -51,6 +51,9 @@ "version": true, "xmlspace": true } + },{ + "name": "removeViewBox", + "active": true },{ "name": "removeHiddenElems", "active": true, diff --git a/plugins/removeViewBox.js b/plugins/removeViewBox.js new file mode 100644 index 00000000..cfd0d4f3 --- /dev/null +++ b/plugins/removeViewBox.js @@ -0,0 +1,35 @@ +var regViewBox = /^0\s0\s(\d+)\s(\d+)$/, + viewBoxElems = ['svg', 'marker', 'pattern', 'symbol', 'view']; + +/** + * Remove viewBox attr which coincides with a width/height box. + * + * @see http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute + * + * @param {Object} item current iteration item + * @param {Object} params plugin params + * @return {Boolean} if false, item will be filtered out + * + * @author Kir Belevich + */ +exports.removeViewBox = function(item, params) { + + if ( + item.isElem(viewBoxElems) && + item.hasAttr('viewBox') && + item.hasAttr('width') && + item.hasAttr('height') + ) { + + if (match = item.attr('viewBox').value.match(regViewBox)) { + if ( + item.attr('width').value == match[1] && + item.attr('height').value == match[2] + ) { + item.removeAttr('viewBox'); + } + } + + } + +};