diff --git a/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Text/Formatted/RichText/RTFDataFormat.cs b/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Text/Formatted/RichText/RTFDataFormat.cs index a7fcbf89..d4afbcd3 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Text/Formatted/RichText/RTFDataFormat.cs +++ b/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Text/Formatted/RichText/RTFDataFormat.cs @@ -31,7 +31,25 @@ namespace UniversalEditor.DataFormats.Text.Formatted.RichText if (ftom == null) throw new ObjectModelNotSupportedException(); Writer writer = base.Accessor.Writer; - writer.WriteLine("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033\\uc1 "); + writer.Write("{\\rtf1"); + // writer.WriteLine("\\ansi\\ansicpg1252"); + + if (ftom.DefaultFont != null && ftom.Fonts.Contains(ftom.DefaultFont)) + { + writer.Write("\\deff" + ftom.Fonts.IndexOf(ftom.DefaultFont)); + } + // writer.Write("\\deflang1033\\uc1"); + + if (ftom.Fonts.Count > 0) + { + writer.Write("{\\fonttbl"); + foreach (FormattedTextFont font in ftom.Fonts) + { + writer.Write("{\\f" + ftom.Fonts.IndexOf(font).ToString() + " " + font.Name + ";}"); + } + writer.Write("}"); + } + foreach (FormattedTextItem item in ftom.Items) { RenderItem(writer, item); diff --git a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextFont.cs b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextFont.cs new file mode 100644 index 00000000..c5c38f5e --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextFont.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UniversalEditor.ObjectModels.Text.Formatted +{ + public class FormattedTextFont : ICloneable + { + public class FormattedTextFontCollection + : System.Collections.ObjectModel.Collection + { + + } + + private string mvarName = String.Empty; + public string Name { get { return mvarName; } set { mvarName = value; } } + + public object Clone() + { + FormattedTextFont clone = new FormattedTextFont(); + clone.Name = (mvarName.Clone() as string); + return clone; + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextObjectModel.cs b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextObjectModel.cs index 1cc6d8fd..fa8ab826 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextObjectModel.cs +++ b/CSharp/Plugins/UniversalEditor.Essential/ObjectModels/Text/Formatted/FormattedTextObjectModel.cs @@ -19,20 +19,31 @@ namespace UniversalEditor.ObjectModels.Text.Formatted return _omr; } - private FormattedTextItem.FormattedTextItemCollection mvarSegments = new FormattedTextItem.FormattedTextItemCollection(); - public FormattedTextItem.FormattedTextItemCollection Items { get { return mvarSegments; } } + private FormattedTextFont mvarDefaultFont = null; + public FormattedTextFont DefaultFont { get { return mvarDefaultFont; } set { mvarDefaultFont = value; } } + + private FormattedTextFont.FormattedTextFontCollection mvarFonts = new FormattedTextFont.FormattedTextFontCollection(); + public FormattedTextFont.FormattedTextFontCollection Fonts { get { return mvarFonts; } } + + private FormattedTextItem.FormattedTextItemCollection mvarItems = new FormattedTextItem.FormattedTextItemCollection(); + public FormattedTextItem.FormattedTextItemCollection Items { get { return mvarItems; } } public override void Clear() { - mvarSegments.Clear(); + mvarFonts.Clear(); + mvarItems.Clear(); } public override void CopyTo(ObjectModel where) { FormattedTextObjectModel clone = (where as FormattedTextObjectModel); - foreach (FormattedTextItem segment in mvarSegments) + foreach (FormattedTextFont font in mvarFonts) { - clone.Items.Add(segment.Clone() as FormattedTextItem); + clone.Fonts.Add(font.Clone() as FormattedTextFont); + } + foreach (FormattedTextItem item in mvarItems) + { + clone.Items.Add(item.Clone() as FormattedTextItem); } } } diff --git a/CSharp/Plugins/UniversalEditor.Essential/UniversalEditor.Essential.csproj b/CSharp/Plugins/UniversalEditor.Essential/UniversalEditor.Essential.csproj index c2e5bad3..483e6370 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/UniversalEditor.Essential.csproj +++ b/CSharp/Plugins/UniversalEditor.Essential/UniversalEditor.Essential.csproj @@ -103,6 +103,7 @@ +