0

我正在使用 python 库 svgwrite 来生成 svg 文件。我必须将两行文本准确地放在矩形的中心。文本应左对齐。矩形的宽度和高度是已知的。我在一个组容器中插入了两条文本行,并通过将它们的“text_anchor”属性设置为“start”并将x位置设置为0来对齐它们。这是代码:

svg = svgwrite.Drawing(size=(210*mm, 297*mm), viewBox=('0 0 210 297'))
rect_width = 80
rect_height = 25
rect = svg.rect(insert=(0, 0), size=(rect_width, rect_height), fill='none', stroke='red', stroke_width=1)
font_size = 6 #in mm
style = "font-family:Arial; font-size:%i" % (font_size)
text_1 = svg.text('Line 1', insert=(0,0), style=style, text_anchor='start', dominant_baseline='hanging')
text_2 = svg.text('Longer Line 2', insert=(0, font_size), style=style, text_anchor='start', dominant_baseline='hanging')
text_group = svg.g()
text_group.add(text_1)
text_group.add(text_2)
x_pos = rect_width/2
y_pos = rect_height/2-font_size
text_group.translate(x_pos, y_pos)
svg.add(rect)
svg.add(text_group)

输出显示在这里: 查看生成的 SVG

'text_group' 的垂直位置似乎没问题(在中心)。但是水平位置应该更靠左。如果我可以获得“text_group”的宽度并修改“x_pos”,这是可以实现的:

x_pos = rect_width/2 - text_group_width/2

我找不到任何方法来获取 svgwrite 中文本组的宽度。是否有任何方法来获得宽度,或者是否有任何替代解决方案来解决这个问题?

4

1 回答 1

0

我找到了这个

svg.text(style="text-anchor:middle")

对居中对齐文本很有用

于 2019-12-16T04:26:28.697 回答