我正在尝试将SVG文本对齐到另一个SVG对象下面。这个包含SVG线条的示例在Firefox中运行良好:
<svg>
<line x1='0' y1='100' x2='100' y2='100' stroke='red'/>
<text x='50' y='100' text-anchor='middle' font-size='24' style="dominant-baseline: text-before-edge">Text</text>
</svg>
这个边界框正好从下方接触到线条,可以通过选择/突出显示文本来看到。
然而,不幸的是,Inkscape目前还不支持使用dominant-baseline
样式进行垂直对齐。(虽然使用text-anchor
进行水平对齐似乎得到了很好的支持。)但我需要Inkscape的支持。我发现一个transform
-hack,在Inkscape中似乎有效,但我无法弄清如何获得与dominant-baseline: text-before-edge
效果相同的效果。(如何在IE9中垂直居中SVG文本)
更新
我正在使用带有JavaScript的浏览器生成SVG。因此,重新计算浏览器中SVG文本元素的位置使其可用于Inkscape是可以的。然而,即使这个扩展已经显式地被做出(隐含在上面建议的transform
-hack中),我仍然缺乏解决方案。
dy
可以解决问题。然而,正确的dy
将高度依赖于所使用的字体。因此,这对我来说是一个过于严格的限制,因为我需要使用不同的字体(甚至是我无法预先检查的自定义字体)。看起来很奇怪,如此简单的任务竟然如此困难。某种程度上应该可以计算出给定字体的基线位于边界框中的位置。 - Daniel