0

我正在编写服务器端软件,该软件通过在 SVG 中生成单个帧并使用 rsvg-convert 渲染为 PNG 来制作电影。影片需要逐个字符地将效果应用于 SVG 中的文本。使用 SVG 文本元素,我无法对每个字符应用单独的样式,因此我必须为每个字符使用单独的文本元素来呈现文本。

我的问题是:获取每个字符的 x 轴位置的最佳方法是什么,这样当我逐个字符地绘制文本时,它看起来与使用单个文本元素绘制的文本相同。

即.. <text x="100" y="100">aic</text>等同于<text x="?" y="100">a</text> <text x="?" y="100">i</text> <text x="?" y="100">c</text>

这是我的一个解决方案:在浏览器上准备动画时,使用 SVG 文本元素的 getExtentOfChar() 方法并将该元数据传递给服务器。我不喜欢这样,因为它让我对浏览器实现、安装字体、浏览器错误等方面的变化持开放态度。而且它使测试变得困难,并阻止我从脚本自动生成这些电影。

我怀疑我需要直接使用 freetype2 或 Pango 库,但我希望有人已经解决了这个问题。

4

1 回答 1

2

如果您将字符包装在 tspans 中,您可以设置它们的样式:http: //jsfiddle.net/longsonr/qxe4S/是不是更容易?

于 2012-02-23T07:30:35.877 回答