根据文本宽度在文本输出中使用tab char创建列?

时间:2014-01-08 21:37:29

标签: javascript jquery email text

假设我有一个产品编号,产品名称和数量的列表,这些列表将被转储到文本输出中。假设所有三个字段都是可变长度的,我在输出中没有固定宽度字体的好处。有没有办法可靠地计算每行插入的标签数量以创建一致的列?这最终通过javascript进入电子邮件,因此假设输出中没有HTML用法。

我得到的最接近的是循环遍历列表,记录每个字段的最大字符串长度,并根据当前strlen和max strlen之间的差异编写函数来估计制表符的数量。假设6个字符大致相当于一个标签。这让我很接近,但它在极端情况下崩溃了。

function cTab(strLen, col){
    var i, tabs = "";

    for(i=1;i<=Math.floor((max[col]-strLen)/6)+2;i++){ tabs+= "\t"; }

    return tabs;
}

在这里小提琴:http://jsfiddle.net/UA6QF/

我简单地考虑将每个常用键盘字符映射到“宽度值”(例如A将是1i将是0.5),并且基于计算制表符宽度总和而不是strlens,但这似乎很重,有点极端。

PS:请不要问这是怎么回事,我真的希望我们能够建立更有能力的东西。这是一个漫长而悲伤的故事,也是后代的警示故事。

1 个答案:

答案 0 :(得分:0)

您使用的任何系统都不可靠,无法控制电子邮件中的字体间距,特别是因为不同的计算机甚至可能没有相同的字体。你受限于这样一个事实:不同的系统会有不同的字体,正如我相信你知道的那样,它们的大小不同。 除非你使用HTML电子邮件,否则你几乎没有选择,我相信除非你计算出最大字体的“最大尺寸”。但即便如此,窗口宽度也可以完全消除。