0

我想了解一些关于富文本格式的有趣细节 下面是在记事本中打开的富文本格式内容示例

{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f11\fnil Cairo;}{\f13\fnil Zapf Dingbats;}{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}
{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f100\fnil FoxFont;}{\f107\fnil MathMeteor;}{\f164\fnil Futura;}{\f1024\fnil American Heritage;}{\f2001\fnil Arial;}{\f2005\fnil Courier New;}{\f2010\fnil Times New Roman;}
{\f2011\fnil Wingdings;}{\f2515\fnil MT Extra;}{\f3409\fnil FoxPrint;}{\f11132\fnil InsigniaLQmono;}{\f11133\fnil InsigniaLQprop;}{\f14974\fnil LB Helvetica Black;}{\f14976\fnil L Helvetica Light;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;
\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\f4\fs18 \sbasedon222\snext0 Normal;}}{\info{\title samplepostscript.msw}{\author 
Computer Science Department}}\widowctrl\ftnbj \sectd \sbknone\linemod0\linex0\cols1\endnhere \pard\plain \qc \f4\fs18 {\plain \b\f21 Sample Rich Text Format Document\par 
}\pard {\plain \f20 \par 
}\pard \ri-80\sl-720\keep\keepn\absw570 {\caps\f20\fs92\dn6 T}{\plain \f20 \par 
}\pard \qj {\plain \f20 his is a sample rich text format (RTF), document. This document was created using Microsoft Word and then printing the document to a RTF file. It illustrates the very basic text formatting effects that can be achieved using RTF. 
\par 
\par 
}\pard \qj\li1440\ri1440\box\brdrs \shading1000 {\plain \f20 RTF }{\plain \b\f20 contains codes for producing advanced editing effects. Such as this indented, boxed, grayed background, entirely boldfaced paragraph.\par 
}\pard \qj {\plain \f20 \par 
Microsoft  Word developed RTF for document transportability and gives a user access to the complete set of the effects that can be achieved using RTF. \par 
}}

在 MS word 中编辑此文件后,它发生了很大变化。我没有通过在 MS word 中打开删除或添加任何内容,我删除了“illustrates”一词(可以在上面的 rtf 文件中看到),然后添加词再次回到相同的位置。所以文件内容没有任何变化。但是保存文件后,我在文本编辑器中打开了它,做了很多更改

\par }\pard \ltrpar\ql \li0\ri-80\sl-720\slmult0\keep\keepn\widctlpar\absw570\wrapdefault\faauto\rin-80\lin0\itap0 {\rtlch\fcs1 \af46\afs92 \ltrch\fcs0 \caps\f46\fs92\dn6\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 T}{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 
\f46\fs24\insrsid1866410 
\par }\pard \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 
his is a sample rich text format (RTF), document. This document was created using Microsoft Word and then printing the document to a RTF file. It }{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 illustrates }
{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 the very basic text formatting effects that can be achieved using RTF. 
\par 
\par }\pard \ltrpar\qj \li1440\ri1440\widctlpar\brdrt\brdrs\brdrw15 \brdrl\brdrs\brdrw15 \brdrb\brdrs\brdrw15 \brdrr\brdrs\brdrw15 \wrapdefault\faauto\rin1440\lin1440\itap0 \shading1000 {\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 
\hich\af46\dbch\af31505\loch\f46 RTF }{\rtlch\fcs1 \ab\af46\afs24 \ltrch\fcs0 \b\f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 contains codes for pr\hich\af46\dbch\af31505\loch\f46 
oducing advanced editing effects. Such as this indented, boxed, grayed background, entirely boldfaced paragraph.
 \par }\pard \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 

主要变化是以下行

}\pard \qj {\plain \f20 his is a sample rich text format (RTF), document. This document was created using Microsoft Word and then printing the document to a RTF file. It illustrates the very basic text formatting effects that can be achieved using RTF.

被替换为

\par }\pard \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 
his is a sample rich text format (RTF), document. This document was created using Microsoft Word and then printing the document to a RTF file. It }{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 illustrates }
{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 the very basic text formatting effects that can be achieved using RTF. 

您可以看到我在文件中剪切并粘贴“插图”一词的部分的更改。在该部分中添加了一些东西,例如

illustrates }
{\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46\fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46 the very basic text formatting effects that can be achieved using RTF. "

那么为什么会发生这种变化呢?

更新: 通过下面的答案,我发现这是由于 ms word 添加了一些自己的样式等现在我的问题是我可以删除这个附加的源代码或代码(例如 {\rtlch\fcs1 \af46\afs24 \ltrch\fcs0 \f46 \fs24\insrsid1866410 \hich\af46\dbch\af31505\loch\f46) 从 rtf 文件手动使用二进制工具?如果我删除它会出错吗?(对于一个文件,我通过手动删除它进行了更改,当我检查内容时,没有删除任何数据)。但我想知道删除它是否可以?

4

2 回答 2

0

部分原因是每个版本的 Word 都引入了新功能,这些新功能需要 RTF 标准中的新工具来表示它们。特别是,Word 中为不同的非 Unicode 字符编码标准和混合脚本(LTR 和 LTR 脚本以及“东亚”脚本)提供的支持意味着很多 rtf 代码都与编码和文本方向有关,即使您有一个除了 LTR 文本和 Unicode 编码之外什么都不包含的文档。(这就是 ltrpar、hich、dbch、ltrch 的全部内容。

许多程序会生成 RTF,而旧代码通常会生成对应于旧版本标准的 RTF。如果您在新版本的 Word 中打开此类文档并重新另存为 RTF,则通常会使用新标准进行保存。

于 2013-06-07T15:38:18.007 回答
0

今天我们得到了编码损坏的文件(修复后完成的屏幕截图)以及修复的最佳方法:寻找规格。您需要知道的第一件事是在哪里找到字符串 — 使用 rtf 配置词作为"\rtlch" "\ltrch"或类似"\loch\""\hich\"参数的 smthn。在这种情况下,我们已将所有 " \loch\f616 " " \hich\f616 " 和其他fxxx匹配更改为f0

fN是字体编号(与afN相关的字体编号)。N指字体表中的条目。fsNafsN表示字体大小。

例如:

此文本看起来像 abrakadabra — Àðáèòðàæíûé ñóä ãîðîäà Ìîñêâû Äåëî ¹ À40-63383/2018

我们可以使用ctrl+f " 63383/2018 " 找到这个字符串,现在我们在 Sublime raw .rtf 中看到:

{\rtlch\fcs1 \af793\afs24 \ltrch\fcs0 \b\f793\fs24\lang1033\langfe1033\langnp1033\insrsid7292261\charrsid9138747 \'c0\'f0\'e1\'e8\'f2\'f0 \'e0\'e6\'ed\'fb\'e9 \'f1\'f3\'e4 \'e3\'ee\'f0\'ee\'e4\'e0 \'cc\'ee\'f1\'ea\'e2\'fb}{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \b\f0\fs24\lang1033\langfe1033\langnp1033\insrsid15809263\charrsid9138747 \par }{\rtlch\fcs1 \af793\afs24 \ltrch\fcs0 \f793\fs24\lang1033\langfe1033\langnp1033\insrsid9842406\charrsid9138747 \'c4\'e5\'eb\'ee \'b9 \'c040-63383/2018}

如果我们将所有"\af793""\f793"更改为"af0""f0"

{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \b\f0\fs24\lang1033\langfe1033\langnp1033\insrsid7292261\charrsid9138747 \'c0\'f0\'e1\'e8\'f2\'f0 \'e0\'e6\'ed\'fb\'e9 \'f1\'f3\'e4 \'e3\'ee\'f0\'ee\'e4\'e0 \'cc\'ee\'f1\'ea\'e2\'fb}{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \b\f0\fs24\lang1033\langfe1033\langnp1033\insrsid15809263\charrsid9138747 \par }{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24\lang1033\langfe1033\langnp1033\insrsid9842406\charrsid9138747 \'c4\'e5\'eb\'ee \'b9 \'c040-63383/2018}

利润!Арбитражный суд города Москвы Дело № А40-63383/2018

如您所见 ,字符前面的 \b\ 表示粗体文本。在这里您可以看到其他字符仍然有“af739”和“f793”,我们无法用俄语阅读它们,但我们的示例有 af0 - 所以 MS Word 实际上向我们显示了正确的文本。

于 2018-07-31T16:39:54.593 回答