Rtf(富文本格式)解析

参考了微软《RTF1.7规范》和一些网站的帖子,简单总结一下:

Rtf规范最早是微软编写的关于多媒体存储的一种文档存储格式,后来微软把它开放出来,这样就使得不同的应用程序、操作系统、显示设备之间可以根据Rtf规范进行实现,最终使得同一个Rtf格式的文档在不同的环境有相同的显示效果。

1、RTF文件:使用7-bit ASCII字符格式存储,文件没有限制一行的最大长度。

RTF文件 = 组 + 控制字 + 控制符 + 文档内容

2、控制字:管理文档信息、文档显示格式的命令,一个控制字最长32个字符。

控制字 = \ + 字母序列 + 分隔符

例如:"\fc "代表字体颜色

字母序列 = a~z小写字母中的一个或者多个字符

例如:"\fc "代表字体颜色

分隔符 = 空格 或者 数字 或者 空格和数字 (数字作为控制字的参数)

例如:"\b "代表加粗,"\b0 "代表不加粗

注意:任何非字母和数字的其他字符。这种情况下,此分隔字符结束控制字,而它并不属于控制字的一部分。如果一个空格用于分隔控制字,该空格不会在文档中出现。而任何跟随该分隔符的字符,包括空格,将在文档中出现。因此,你应该只在必要时使用空格,避免仅仅为了分割RTF代码而使用空格。

3、控制符:控制符不需要分隔符

控制符 = \ + 非字母数字字符

例如 “\~”代表不换行空格。

4、组

组 = { 控制字 + 控制符 + 文档内容 }

例如"{\b 这个代表加粗}"会将"这个代表加粗"内容进行加粗

注意:一个组的格式描述只影响组内的文本。通常,一个组中的文本继承前一组的文本格式。但微软的RTF约定,对于脚注、注解、头和尾的组(本章稍后描述)不继承前一组的文本格式。因此, 请确定这些组总能正确格式化,正确做法是用\sectd, \pard\plain控制字将组中的格式设为默认值,然后再增加任何需要的格式。

\sectd : 重新设置为默认的节属性

\pard:重置为默认段落属性

\plain: 重新设定字型(字符)格式化属性为应用程序定义的默认值(例如,粗体、下划线、斜体被禁止;字体大小被重新设定为12磅point)。关联字体(字符)格式化属性也被重新设定。

你可能感兴趣的:(Rtf格式分析)