富文本格式行间距

时间:2015-07-22 11:35:33

标签: c# rtf

我尝试转换RTF格式的纯文本。因此,我使用RichTextBox(WinForms) 有关方法将RTF-Markup作为字符串。

现在,我想在标记中插入行间距。我发现有2个参数:

 - \slX (Space between lines in twips)
 - \slmultX (either 0 or 1)

如果我设置\slmult0,则行间距 文本行。
当我设置\slmult1时,行间距低于文本行。

我按以下方式计算间距:

(lineSpacing + fontSize)*20

当我从\slmult0切换到\slmult1时,我确定线距离比\slmult0小一点。

有人知道这种行为的原因吗?我是否必须使用其他公式计算?

1 个答案:

答案 0 :(得分:3)

如果我设置\ slmult0,则行间距高于文本行。 当我设置\ slmult1时,行间距低于文本行。

这不是我在specs中读到的内容。

我理解它的方式,这意味着\slmult0表示\slN的值将在某个单位中直接用作距离,而{{1} }} {}} {}}} {}} {}} {}} {} {}}

查看上一篇文章here (一些)更多细节! (但也有一条关于它生效太晚的说明......)

另请注意\slmult1N的符号的重要性! (这就是我上面评论的原因:\slN的效果将取决于行中最高字符的大小..!)

Here对RTF的一些讨论很好;关于单位的说明:

  

RTF中的测量值通常为缇。缇是二十分之一   点,即1440英寸。这导致一些大数字   有时候(比如\ li2160,将左缩进设置为一英寸半)

并明确定义段落前后的额外间距:

  

\ sbN - 在此段落之前N个额外(垂直)空格(默认值:0)
  \ saN - 在此段落之后N个额外(垂直)空格(默认值:0)

Here是更直接的指示:

  

要对段落进行双重处理,请将代码\ sl480 \ slmult1放在之后   \ pard。要使其三重空间,请使用\ sl720 \ slmult1。要有公正的   1.5间距,使用\ sl360 \ slmult1。单行间隔段是默认值,不需要任何特定代码。 (神奇的数字480,   720和360不依赖于文本中的点大小   段。)