我尝试转换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
小一点。
有人知道这种行为的原因吗?我是否必须使用其他公式计算?
答案 0 :(得分:3)
如果我设置\ slmult0,则行间距高于文本行。 当我设置\ slmult1时,行间距低于文本行。
这不是我在specs中读到的内容。
我理解它的方式,这意味着\slmult0
表示\slN
的值将在某个单位中直接用作距离,而{{1} }} {}} {}}} {}} {}} {}} {} {}}
查看上一篇文章here (一些)更多细节! (但也有一条关于它生效太晚的说明......)
另请注意\slmult1
中N
的符号的重要性! (这就是我上面评论的原因:\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不依赖于文本中的点大小 段。)