2014-05-16 52 views
0

我有一個WPF RichTextBoxRichTextBox中不使用RTF字體名稱

<RichTextBox x:Name="txtMain" IsReadOnly="True" /> 

,我通過DataFormats.Rtf

string rtf = "\\li90{\\cf0 Marc Says:}\\par\\li180{{\\fonttbl {\\f0\\fnil\\fcharset0 Consolas;}}\\cf2\\fs18 Test font name}\\par" 

FlowDocument fd = new FlowDocument(); 
MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(rtf)); 
TextRange textRange = new TextRange(fd.ContentStart, fd.ContentEnd); 
textRange.Load(ms, DataFormats.Rtf); 
txtMain.Document = fd; 

分配給它一些RTF格式的文本但是,而不是使用RTF字體名稱Consolas,RichTextBox正在使用默認分配的Segoe UI字體名稱。

想法?

+0

原來我只是在\ rtf1 \ ansi之後添加\ deff0。 –

回答

0

變化

MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(rtf)); 

MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(rtf)); 

另外,還要確保你的RTF是正確的。

+0

我知道我的RTF是正確的,因爲它適用於WinForms RichTextBox。我試過使用UTF8沒有成功。 –

+0

由Winforms RTB生成的RTF在WPF中不同。它應該始終以'{\\ rtf1'開頭 –