From 920a3e267c2595921e8c404f8aeab8e2a8cdde3e Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Tue, 7 Feb 2023 08:18:11 +0100 Subject: [PATCH] fix split text (#2057) --- lib/extensions/palette_split_text.py | 32 +++++++++++++++++----------- templates/palette_split_text.xml | 1 - 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/extensions/palette_split_text.py b/lib/extensions/palette_split_text.py index 3257d6949..19b707826 100644 --- a/lib/extensions/palette_split_text.py +++ b/lib/extensions/palette_split_text.py @@ -11,32 +11,38 @@ from .base import InkstitchExtension class PaletteSplitText(InkstitchExtension): # Splits sublines of text into it's own text elements in order to color them with the color picker - def __init__(self, *args, **kwargs): - InkstitchExtension.__init__(self, *args, **kwargs) - self.arg_parser.add_argument("-l", "--line-height", type=int, default=6, dest="line_height") - def effect(self): if not self.svg.selection: inkex.errormsg(_("Please select one or more text elements to split lines.")) return - line_height = self.options.line_height - for text in self.svg.selection.get(inkex.elements.TextElement): parent = text.getparent() content = text.get_text() lines = content.split('\n') lines.reverse() - style = text.get('style') - x = text.get('x') - y = text.get('y') - y = float(y) + (len(lines) - 1) * line_height + lines = [line for line in lines if not len(line) == 0] + + style = text.style + # If shape-inside style is used, it will lead to bad placement + style.pop('shape-inside', None) + + transform = text.transform + text.pop('transform') + + bbox = text.get_inkscape_bbox() + x = bbox.left + y = bbox.bottom + height = bbox.height / (len(lines)) + for line in lines: element = inkex.TextElement() element.text = line - element.set('style', style) - element.set('x', x) + element.set('style', str(style)) + element.set('x', str(x)) element.set('y', str(y)) - y = float(y) - line_height + element.set('transform', str(transform)) + + y -= height parent.insert(0, element) parent.remove(text) diff --git a/templates/palette_split_text.xml b/templates/palette_split_text.xml index 22c45dd89..2057fa0a1 100644 --- a/templates/palette_split_text.xml +++ b/templates/palette_split_text.xml @@ -13,7 +13,6 @@ - 6