在渲染之前获取SVG中的文本宽度

rad*_*lan 6 size svg text width

我想在SVG的文本周围放一个矩形.我知道文本的高度(元素的font-size属性text).但宽度取决于实际内容.使用getBBox()getComputedTextLength()应该工作.但这仅在渲染后才有效.

有没有办法以其他方式指定?例如x,width相对于其他值定义和属性?我没有在SVG Spec中找到类似的东西.

mat*_*ter 4

确定文本结束位置可能需要与渲染本身实现的底层代码路径大致相同 - 根据字体和样式等遍历每个字符的宽度...我不知道 SVG 标准定义了一种直接获取的方法在不进行实际完整渲染的情况下获取此信息,直到出现此类方法或由其他人在此处报告之前,该方法应该是在进行实际渲染之前以不可见方式渲染。

您可以在隐藏层(z-index、不透明度等)或可见视口之外执行此操作,以实验中效果最好的为准。您只需要让浏览器进行渲染即可找到答案,因此您可以隐式渲染,然后使用getComputedTextLength()