Only attempt to group elements that the content model allows to be children of a <g> when --create-groups is specified.
(before it could happen that e.g. `tspan` elements were grouped, which is invalid, see issues #96 and #97)
This commit is contained in:
parent
419f41cb48
commit
d477518188
1 changed files with 18 additions and 1 deletions
|
|
@ -1032,7 +1032,24 @@ def createGroupsForCommonAttributes(elem):
|
||||||
while curChild >= 0:
|
while curChild >= 0:
|
||||||
childNode = elem.childNodes.item(curChild)
|
childNode = elem.childNodes.item(curChild)
|
||||||
|
|
||||||
if childNode.nodeType == 1 and childNode.getAttribute(curAttr) != '':
|
if childNode.nodeType == 1 and childNode.getAttribute(curAttr) != '' and \
|
||||||
|
childNode.nodeName in [
|
||||||
|
# only attempt to group elements that the content model allows to be children of a <g>
|
||||||
|
|
||||||
|
# SVG 1.1 (see https://www.w3.org/TR/SVG/struct.html#GElement)
|
||||||
|
'animate', 'animateColor', 'animateMotion', 'animateTransform', 'set', # animation elements
|
||||||
|
'desc', 'metadata', 'title', # descriptive elements
|
||||||
|
'circle', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'rect', # shape elements
|
||||||
|
'defs', 'g', 'svg', 'symbol', 'use', # structural elements
|
||||||
|
'linearGradient', 'radialGradient', # gradient elements
|
||||||
|
'a', 'altGlyphDef', 'clipPath', 'color-profile', 'cursor', 'filter',
|
||||||
|
'font', 'font-face', 'foreignObject', 'image', 'marker', 'mask',
|
||||||
|
'pattern', 'script', 'style', 'switch', 'text', 'view',
|
||||||
|
|
||||||
|
# SVG 1.2 (see https://www.w3.org/TR/SVGTiny12/elementTable.html)
|
||||||
|
'animation', 'audio', 'discard', 'handler', 'listener',
|
||||||
|
'prefetch', 'solidColor', 'textArea', 'video'
|
||||||
|
]:
|
||||||
# We're in a possible run! Track the value and run length.
|
# We're in a possible run! Track the value and run length.
|
||||||
value = childNode.getAttribute(curAttr)
|
value = childNode.getAttribute(curAttr)
|
||||||
runStart, runEnd = curChild, curChild
|
runStart, runEnd = curChild, curChild
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue