【问题标题】:Rich Text Format Line Spacing富文本格式行距
【发布时间】:2015-07-22 11:35:33
【问题描述】:

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

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

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

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

我按以下方式计算间距:

(lineSpacing + fontSize)*20

当我从\slmult0 切换到\slmult1 时,我确定行距比\slmult0 小一些。

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

【问题讨论】:

  • 在这里通过像 docx 这样的东西作为中间表示可能更简单,因为工具更好。
  • _我确定,线距小一点_你是怎么做到的?
  • 您可以在写字板中看到它:创建一个新的 RTF 文件,将间距更改为“2”。然后,保存 + 关闭文件 -> 复制它 -> 将副本中的 \slmult0 更改为 1 并在写字板中比较两个文件。

标签: c# rtf


【解决方案1】:

如果我设置 \slmult0,则行距在文本行上方。 当我设置\slmult1时,行距在文本行的下方。

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

按照我的理解,这意味着\slmult0 表示\slN 的值将直接用作某个单位中的距离,而\slmult1 表示@987654328 \slN 中的 @ 表示因素,常规行距乘以该因素。

查看最后一个帖子here (一些)更多细节! (不过也有注释说晚了一行才生效..)

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

Here 很好地讨论了一些 RTF 内容;关于单位的说明:

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

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

\sbN -- 本段前 N twips 额外(垂直)空格(默认值:0)
\saN -- 本段之后的 N twips 额外(垂直)空间(默认值:0)

Here是更直接的指令:

要将段落加倍,请将代码 \sl480\slmult1 放在右侧之后 \pard。要三倍空格,请使用 \sl720\slmult1。拥有刚刚 1.5 间距,使用 \sl360\slmult1。单行距段落是默认设置,不需要任何特定代码。 (神奇的数字 480, 720 和 360 不取决于 段。)

【讨论】:

  • 您好 TaW,感谢您的提示分析。我想,我必须澄清我的问题。我需要 \slmult0 (距离)的行为,但空间应该在文本行下方。此外,链接中的帖子的问题。 pt/twips中的单行距是多少(“\slN表示行距为N/240*(单行距)”)
  • 我添加了更多链接和引用来学习。我总是希望间距只影响您为其设置的一个段落,即所有行之间的间距。您是否在或之前设置它(如建议在 \pard 之后或(如果您不重置 \par 之后的段落))?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多