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

2024-06-25 23:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python生成一个SVG,其中包含可以变化的文本,并且我希望在它后面放置一个半透明的矩形,以保证稍后将其覆盖到另一个图形元素上时有一定的对比度。在

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

如何使用python来预测SVG文本的范围,以便生成一个大小合适的矩形?在


Tags: 字符串svg文本图形元素字体像素字体大小
1条回答
网友
1楼 · 发布于 2024-06-25 23:59:19

我想如果你用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;

相关问题 更多 >