Text 文本对齐=";“中”_仅在y方向?
我可以在文本元素上使用Text 文本对齐=";“中”_仅在y方向?,text,svg,alignment,text-alignment,Text,Svg,Alignment,Text Alignment,我可以在文本元素上使用text align=“middle”使文本居中。实际上,这只适用于x方向。对于y方向,我使用了Ian G的hack 但是,如果a希望文本在y方向居中,但希望文本在x方向左对齐,我该怎么办? 例如,我有一个rect-元素和一个text-元素位于它的右侧。文本应垂直对齐,以相对于矩形居中显示。因此,我使用text align=“middle”属性。但是我想让文本在x方向左对齐(因为我想在矩形的右边显示它)。这不起作用,因为text align总是同时应用x和y值 事实上,我不
text align=“middle”
使文本居中。实际上,这只适用于x方向。对于y方向,我使用了Ian G的hack
但是,如果a希望文本在y方向居中,但希望文本在x方向左对齐,我该怎么办?
例如,我有一个rect
-元素和一个text
-元素位于它的右侧。文本应垂直对齐,以相对于矩形居中显示。因此,我使用text align=“middle”
属性。但是我想让文本在x方向左对齐(因为我想在矩形的右边显示它)。这不起作用,因为text align
总是同时应用x
和y
值
事实上,我不太喜欢这样的垂直对齐方式,我更喜欢其他方式。但还没有找到更好的解决方案。(我不能使用
主基线
属性,因为我使用的是Batik,Batik不支持它。)我甚至不能自己计算它,因为在SVG中,我无法查询字体的上升/下降/基线。正如您所发现的,基线
相关属性还没有得到普遍支持
一个可能的解决方案是使用类似于旧CSS技巧的方法进行垂直居中
将文本的y坐标设置为要居中的对象的垂直中心。然后使用dy和em值来真实地调整文本
<text x="0" y="100" font-family="Verdana" font-size="20pt" dy="0.35em">Some TEXT</text>
一些文本
dy
的数量不会像你想象的那样是0.5em,因为字体的视觉中心不会正好是em高度的一半。它会因字体而异。但是,一旦您为特定字体找到了一个好的dy
值,它应该适用于任何字体大小
此处演示:
尝试更改字体大小值以确认其保持居中