summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2022-06-21 19:46:59 +0200
committerGitHub <noreply@github.com>2022-06-21 19:46:59 +0200
commitedacc3ec7756d5d9c471b252132f942de8b93b52 (patch)
tree179f42f218a822c42fc6f9434326ef80bc15bbd4
parent6e635df3ec47de24d48958bb4ae273d3e3cbbcca (diff)
Better marker recognition (#1694)
-rw-r--r--lib/lettering/font.py7
-rw-r--r--lib/marker.py6
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/lettering/font.py b/lib/lettering/font.py
index 3e601472..a9c67c40 100644
--- a/lib/lettering/font.py
+++ b/lib/lettering/font.py
@@ -341,9 +341,12 @@ class Font(object):
def _ensure_marker_symbols(self, group):
for marker in MARKER:
- xpath = ".//*[contains(@style, 'marker-start:url(#inkstitch-%s-marker)')]" % marker
- if group.xpath(xpath, namespaces=inkex.NSS):
+ xpath = ".//*[contains(@style, 'marker-start:url(#inkstitch-%s-marker')]" % marker
+ marked_elements = group.xpath(xpath, namespaces=inkex.NSS)
+ if marked_elements:
ensure_marker(group.getroottree().getroot(), marker)
+ for element in marked_elements:
+ element.style['marker-start'] = "url(#inkstitch-%s-marker)" % marker
def _apply_auto_satin(self, group, trim):
"""Apply Auto-Satin to an SVG XML node tree with an svg:g at its root.
diff --git a/lib/marker.py b/lib/marker.py
index 17d4bebd..9d1a0dcd 100644
--- a/lib/marker.py
+++ b/lib/marker.py
@@ -48,7 +48,9 @@ def get_marker_elements(node, marker, get_fills=True, get_strokes=True, get_sati
fills = []
strokes = []
satins = []
- xpath = "./parent::svg:g/*[contains(@style, 'marker-start:url(#inkstitch-%s-marker)')]" % marker
+ # do not close marker-start:url(
+ # if the marker group has been copied and pasted in Inkscape it may have been duplicated with an updated id (e.g. -4)
+ xpath = "./parent::svg:g/*[contains(@style, 'marker-start:url(#inkstitch-%s-marker')]" % marker
markers = node.xpath(xpath, namespaces=inkex.NSS)
for marker in markers:
if marker.tag not in EMBROIDERABLE_TAGS:
@@ -82,6 +84,6 @@ def has_marker(node, marker=list()):
marker = MARKER
for m in marker:
style = node.get('style') or ''
- if "marker-start:url(#inkstitch-%s-marker)" % m in style:
+ if "marker-start:url(#inkstitch-%s-marker" % m in style:
return True
return False