富文本格式行间距

本文关键字:格式 文本 | 更新日期: 2023-09-27 18:03:55

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

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

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

如果我设置'slmult0,行距文本行之上。
当我设置'slmult1时,行距在文本行下面

我用下面的方法计算空格:

(lineSpacing + fontSize)*20

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

有人知道这种行为的原因吗?我需要用另一个公式来计算吗?

富文本格式行间距

如果我设置'slmult0,行间距在文本行之上。当我设置'slmult1时,行间距在文本行以下。

这不是我在说明书中看到的。

我理解它的方式,这意味着'slmult0'slN的值在某些单位中直接用作距离,而'slmult1'slN中的N意味着作为因子,通过它乘以常规行间距。

在这里查看最后一篇文章了解更多细节!(但也有一个关于延迟一行生效的说明…)

还要注意'slNN符号的重要性!(这就是我上面评论的原因:比如'sl234的效果将取决于行中最高的字符的大小…!)

这里有一些关于RTF的很好的讨论;关于单位的说明:

RTF中的测量通常都是用twps表示的。twtip是A的二十分之一点,即一英寸的1440分之一。这导致了一些大的数字有时(如'li2160,将左缩进设置为1.5英寸)

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

'sbN——N段落前的额外(垂直)空格(默认值:0)

下面是更直接的说明:

在之后,将代码'sl480'slmult1放在的右边'豹。使用'sl720'slmult1对其进行三倍空格。只是为了1.5-spacing,使用'sl360'slmult1。默认为单行距段落,不需要任何特定代码。(神奇的数字480,720和360不依赖于文本的点大小段落。)