Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 文本对齐=";“中”_仅在y方向?_Text_Svg_Alignment_Text Alignment - Fatal编程技术网

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
值,它应该适用于任何字体大小

此处演示:

尝试更改字体大小值以确认其保持居中