我正在编写服务器端软件,该软件通过在 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 库,但我希望有人已经解决了这个问题。