使用python,如何预测SVG中文本的像素宽度?

时间:2016-02-06 20:45:49

标签: python svg

我正在使用python生成一个可以变化的文本的SVG,并且我想在它后面放一个半透明的矩形,以保证稍后在其他图形元素上叠加时的对比度。

不幸的是,我不知道如何预测SVG中特定文本字符串的像素范围。我可以选择我使用的字体(但我不认为等宽可以接受)以及我使用的字体大小。

我如何使用python预测SVG文本的范围,以便生成适当大小的矩形?

1 个答案:

答案 0 :(得分:4)

我认为如果你在Python中做到这一点会让事情变得混乱。可能压力最小的方法是安装FreeType并使用它来为您计算文本尺寸。但对于相当小的坚果来说,这是一把非常大的锤子。

This answer显示了一种更简单的方法 - 使用SVG过滤器将背景直接应用于文本,而无需调整任何大小。

您也可以将此方法用于半透明背景:



<svg width="360" height="100" viewBox="0 0 360 100">
  <defs>
    <filter x="0" y="0" width="1" height="1" id="text-bg">
      <feFlood flood-color="#ff0" flood-opacity="0.5" />
      <feComposite in="SourceGraphic" />
    </filter>
  </defs>
  <rect x="0" y="0" width="400" height="100" fill="#444" stroke="none" />
  <path d="m0 10 40 80 40-80 40 80 40-80 40 80 40-80 40 80 40-80 40 80"
        stroke="#888" stroke-width="10" fill="none" />
  <text font-family="Arial" font-weight="bold" filter="url(#text-bg)"
        x="180" y="50" font-size="20" fill="#000" text-anchor="middle">
    Edit this text and reload the SVG
  </text>
</svg>
&#13;
&#13;
&#13;