···
SVG node e.g. fill="red", font_size=20, text_anchor="middle". '''
382
-
def __init__(self, text, fontSize, x, y, center=False, lineHeight=1,
382
+
def __init__(self, text, fontSize, x, y, center=False, valign=None,
383
+
lineHeight=1, **kwargs):
singleLine = isinstance(text, str)
386
+
text = text.splitlines()
if 'text_anchor' not in kwargs:
kwargs['text_anchor'] = 'middle'
394
-
centerOffset = fontSize*0.5*center
396
-
emOffset = 0.4 - lineHeight * (numLines - 1) / 2
400
+
# Backwards compatible centering
401
+
centerOffset = fontSize*0.5*center
403
+
emOffset = 0.4 - lineHeight * (numLines - 1) / 2
404
+
if valign == 'middle':
405
+
emOffset = 0.4 - lineHeight * (numLines - 1) / 2
406
+
elif valign == 'top':
408
+
elif valign == 'bottom':
409
+
emOffset = -lineHeight * (numLines - 1)
fontSize = float(fontSize)
translate = 'translate(0,{})'.format(centerOffset)
if 'transform' in kwargs:
402
-
kwargs['transform'] = translate + ' ' + kwargs['transform']
418
+
kwargs['transform'] += ' ' + translate
kwargs['transform'] = translate
super().__init__(x=x, y=-y, font_size=fontSize, **kwargs)
self.escapedText = xml.escape(text)