在SVG中操作/翻译<text>(添加边界框)</text>

时间:2012-02-09 23:29:38

标签: php javascript svg raphael

问题:我们需要复制在RaphaelJS中创建的SVG文本,其中包含SVG中可变的字体,字体大小,位置,比例,旋转。

但是...... Raphael使用了一个文本边界框,其高度与字符串的实际高度无关。边界框的高度基于font-size和font-family,但与实际字符串无关。因此,字符串“Y”和“,”(具有相同的font-face和font-size)具有相同的高度。

当我们在SVG中重新创建文本时(通过在PHP中生成它),我们可以得到正确的字体大小,并且字体系列正确。但是,SVG的高度并不独立于实际的字符串。因此,“,”将具有比“Y”低得多的高度。这种高度差异打破了旋转和定位。

问题:我们如何使用复制RaphaelJS的getBBox的'边界框'创建svg(它基本上只是一个适合其中任何字符的框的大小),因此我们可以模仿旋转和定位来自RaphaelJS? 注意:如果有帮助,我们可以转换SVG的text-&gt;路径。我们也可以访问字体文件。

enter image description here

编辑:通过使用matrix()命令并直接翻译转换来解决问题,而不是应用定位,然后缩放,然后旋转。

1 个答案:

答案 0 :(得分:1)

如果你想操纵单词中的字符位置:句子和你在服务器上生成的SVG那么你应该能够使用SVG TSPAN并定位字符位置。如果您可以将字母更改为路径,那么我认为该算法是可行的。没有什么可以阻止你为字母数字字体集创建一个相对位置数组。我希望上面的一些内容很有用......