void AppendRtfBody (StringBuilder r, Dictionary<int, int> colorTableIndex, Dictionary<string, int> fontTable)
{
var n = PlainText.Length;
var pc = new Classes ();
var inspan = false;
var sc = new RichTextAttributes ("merged");
for (var i = 0; i < n; i++) {
var cs = classes[i];
if (cs.Class1 != pc.Class1 || cs.Class2 != pc.Class2 ||
cs.Class3 != pc.Class3 || cs.Class4 != pc.Class4) {
if (inspan) {
//r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
r.Append ('}');
}
inspan = true;
r.Append ('{');
sc.Reset ();
sc.Merge (cs.Class1);
sc.Merge (cs.Class2);
sc.Merge (cs.Class3);
sc.Merge (cs.Class4);
sc.AppendRtf (r, colorTableIndex, fontTable);
}
pc = cs;
//
// Write the char
//
var ch = PlainText[i];
if (ch == '\\' || ch == '{' || ch == '}') {
r.Append ('\\');
r.Append (ch);
}
else if (ch == '\n') {
r.AppendLine (@"\par");
}
else if (ch == '\r') {
// Nothing
}
else {
r.Append (ch);
}
}
if (inspan) {
//r.Append (!string.IsNullOrEmpty (sc.Link) ? "}}}}}" : "}");
r.Append ('}');
}
}
}