带有两个文本元素的SVG。当一个因textLength而调整大小时-如何将另一个调整为相同的字符大小

带有两个文本元素的SVG。当一个因textLength而调整大小时-如何将另一个调整为相同的字符大小,svg,resize,Svg,Resize,我的SVG有两个文本元素。在其中一个容器中输入一定数量的字符后,我应用textLength属性使文本收缩以适合容器。 我正在寻找一种方法来自动调整其他文本元素的大小,使字符看起来大小相同 基本上,我希望这两行文本自动调整到其中较小文本的大小 所附代码就是一个示例。请在第一行中键入5个字符,在第二行中键入一个字符-此时,我希望第二行字符的大小与第一行字符的大小相同(目前已缩小) 我试着检查页面,以了解收缩行的哪个属性可以应用于另一行,但不适用于其他行 function fit_text_hori

我的SVG有两个文本元素。在其中一个容器中输入一定数量的字符后,我应用textLength属性使文本收缩以适合容器。 我正在寻找一种方法来自动调整其他文本元素的大小,使字符看起来大小相同

基本上,我希望这两行文本自动调整到其中较小文本的大小

所附代码就是一个示例。请在第一行中键入5个字符,在第二行中键入一个字符-此时,我希望第二行字符的大小与第一行字符的大小相同(目前已缩小)

我试着检查页面,以了解收缩行的哪个属性可以应用于另一行,但不适用于其他行

function fit_text_horizontal(obj,text)
{
//在文本开始收缩之前,这里可以有多少个字符
//在未来,这应以每种字体为基础
//我需要一个界面,为每个字体指定:
//最大线1最大长度调整前,
//最大线2最大长度调整前,
//点线2最大长度调整前
//等
//这都是因为在SVG中没有任何方法
//将文本大小限制为仅收缩,并且
//不要让它成长,只在太长的时间里萎缩
var chars_threshold=obj.getAttribute(“调整大小之前的文本长度”);
//文本开始调整大小(收缩)时-长度是多少
//合适吗
var custom_text_length=obj.getAttribute(“custom_text_length”);
//如果l1中的文本足够长
如果(text.length>=字符数阈值)
{
//添加所有调整大小属性
obj.setAttribute(“文本长度”,自定义文本长度);
对象setAttribute(“preserveSpectratio”、“xMidYMid-meet”);
对象setAttribute(“长度调整”、“间距和符号”);
}
其他的
{
//如果文本足够小,请确保没有
//调整属性大小
对象removeAttribute(“textLength”);
对象删除属性(“保留Aspectratio”);
对象删除属性(“长度调整”);
}
obj.textContent=文本;
}
函数拟合线垂直(l1obj、l1text、l2text)
{
var origin_y=l1obj.getAttribute(“origin_y”);
if(l2text.length)
{
var move_y=l1obj.getAttribute(“行2为空时移动行1_y”);
//l2不为空,需要向上移动第1行
l1obj.setAttribute(“y”,原点y-移动y);
}
其他的
{
l1obj.setAttribute(“y”,原点y);
}
}
功能线变更(obj)
{
var l1obj=document.getElementsByClassName('tag_line1')[0];
var l1entry=document.getElementById('input1');
var l2obj=document.getElementsByClassName('tag_line2')[0];
var l2entry=document.getElementById('input2');
水平拟合文本(l1obj,l1entry.value);
水平拟合文本(l2obj,l2entry.value);
垂直拟合线(l1obj、l1entry.value、l2entry.value);
}
html,body,svg{height:70%}

第1行
第1行

第2行
你应该在问题本身,你不应该试图绕过Stack Overflow关于不发布问题中没有实际代码的代码链接的限制。哦,我没有,只是不理解限制。编辑。谢谢你的提醒,我正在想办法解决这个问题。但我认为这是不可能的,因为字体大小是根据字符数计算的,@Dennis:我可以(通过JS)获得收缩行的当前字体大小并将其应用于另一行吗?我试图获取属性(“字体大小”),但当文本shrinks@LouisShraga我只是按照您的要求这样做了,但是因为字体大小实际上没有改变,所以您得到了默认值
var fontSize=window.getComputedStyle(l1obj).fontSize
console.log(fontSize)