From 0825da15db5984c70a9aa9e61b0018352447d1a9 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sat, 10 Feb 2024 20:17:36 +0100 Subject: Fix lettering id-error and trims (#2711) --- lib/lettering/font.py | 2 +- lib/svg/svg.py | 11 ++--------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lib/lettering/font.py b/lib/lettering/font.py index fb17f760..2aeff3de 100644 --- a/lib/lettering/font.py +++ b/lib/lettering/font.py @@ -365,7 +365,7 @@ class Font(object): line_break_indices = [i for i, t in enumerate(text) if t == "\n"] for group in destination_group.iterdescendants(SVG_GROUP_TAG): # make sure we are only looking at glyph groups - if group.get("id") != "glyph": + if not group.get("id", "").startswith("glyph"): continue i += 1 diff --git a/lib/svg/svg.py b/lib/svg/svg.py index 3bd9a693..2c521098 100644 --- a/lib/svg/svg.py +++ b/lib/svg/svg.py @@ -14,20 +14,13 @@ def get_document(node): return node.getroottree().getroot() -def generate_unique_id(document_or_element, prefix="path"): +def generate_unique_id(document_or_element, prefix="path", blocklist=None): if isinstance(document_or_element, etree._ElementTree): document = document_or_element.getroot() else: document = get_document(document_or_element) - doc_ids = {node.get('id') for node in document.iterdescendants() if 'id' in node.attrib} - - i = 1 - while True: - new_id = "%s%d" % (prefix, i) - if new_id not in doc_ids: - break - i += 1 + new_id = document.get_unique_id(prefix, blacklist=blocklist) return new_id -- cgit v1.2.3