diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2022-06-21 19:46:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-21 19:46:59 +0200 |
| commit | edacc3ec7756d5d9c471b252132f942de8b93b52 (patch) | |
| tree | 179f42f218a822c42fc6f9434326ef80bc15bbd4 | |
| parent | 6e635df3ec47de24d48958bb4ae273d3e3cbbcca (diff) | |
Better marker recognition (#1694)
| -rw-r--r-- | lib/lettering/font.py | 7 | ||||
| -rw-r--r-- | lib/marker.py | 6 |
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 |
