无法使用我的自定义字体打开我的RTF文件



我为我的UWP程序制作了自己的自定义.ttf字体,然后将它们放入资产文件夹中(vs 2017/2019(。当文档在RicheditBox中处理时,它们的运行良好。但是,当我保存RTF文件然后打开它时,我的自定义字体将被忽略。如果我事先将自定义字体安装到Windows fonts文件夹中,则用自定义字体打开文件加载文档。看起来没有安装我的自定义字体,该程序不会将它们链接到文档。

再次 - 我在该程序中使用Richeditbox和我的自定义字体编写了一个程序。处理时 - 字体更改,样式更改等 - 一切都按设计。当我将RTF文件与该程序保存时,并使用该程序打开RTF(相同(程序 - 颜色表还可以,但是我的字体未显示为字体(buildAction -content -content; copytoOutToutputdirectory-始终(。要简化 - 我用文件包含的信息制作了按钮。尽管字体已编译(位于资产文件夹中(,但该程序并未将其链接到文档。

实际上,使用该按钮,我尝试重现此处描述的内容:Richeditbox(UWP(在设置RTF文本时忽略了字体和前景,但是在我的情况下,Richeditbox仅显示Windows fonts目录中安装的字体。如何克服它并使用与我的程序编译的本地字体的链接,或者使安装程序安装字体将字体安装到Windows fonts目录? 我如何在不安装UWP程序的情况下使用自定义字体(将其链接到文档(,或者我需要在安装自身时将自定义字体安装到用户的设备上?

这是我用来显示文本的按钮的代码:

private void Page_Click(object sender, RoutedEventArgs e)
{
    string myRtfString = @"{rtf1fbidisansiansicpg1252deff0nouicompatdeflang1033{fonttbl{f0fnil MyFont;}{f1fnil MyFont1;}{f2fnil MyFont2;}} {colortbl ;red0green0blue0;red255green255blue255;red255green100blue0;} {*generator Riched20 10.0.18362}viewkind4uc1 pardsl480slmult1qjcf1highlight2f0fs36 tthighlight3f1 gf0 acgtf2 chighlight2f0 tthighlight0par}";
    editor.Document.SetText(TextSetOptions.FormatRtf, myRtfString);
}

这是Richeditbox的XAML:

<RichEditBox 
    x:Name="editor"
    Height="200"
    FontFamily="Assets/Fonts/MyFont.ttf#MyFont"
    FontSize="24" RelativePanel.Below="openFileButton"
    RelativePanel.AlignLeftWithPanel="True"
    RelativePanel.AlignRightWithPanel="True" />

gosha,这样,您可以将至少一种字体应用于该.RTF文件 - 请参见下文。我认为,对于其他人,您需要使用该.RTF中的映射信息或自己制作自己的额外地图。那将是一些" trabajo",但是你能做什么?

         private void applyMyFonts()
    {
            string TextOut;
            MyRichEditBox.Document.GetText(TextGetOptions.None, out TextOut);
            MyRichEditBox.Document.Selection.SetRange(0, TextOut.Length);
    MyRichEditBox.Document.Selection.CharacterFormat.Name = "Assets/Fonts/MyFont.ttf#MyFont";   
    }
private async void OpenButton_Click(object sender, RoutedEventArgs e)
    {
        Windows.Storage.Pickers.FileOpenPicker open =
           new Windows.Storage.Pickers.FileOpenPicker();
        open.SuggestedStartLocation =
            Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;
        open.FileTypeFilter.Add(".rtf");
        Windows.Storage.StorageFile file = await open.PickSingleFileAsync();
        if (file != null)
        {
            try
            {
                Windows.Storage.Streams.IRandomAccessStream randAccStream =
            await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
                // Load the file into the Document property of the RichEditBox.
                MyRichEditBox.Document.LoadFromStream(Windows.UI.Text.TextSetOptions.FormatRtf, randAccStream);
            }
            catch (Exception)
            {
                ContentDialog errorDialog = new ContentDialog()
                {
                    Title = "File open error",
                    Content = "Sorry, I couldn't open the file.",
                    PrimaryButtonText = "Ok"
                };
                await errorDialog.ShowAsync();
            }
        }
        applyMyfonts();
}

相关内容

  • 没有找到相关文章

最新更新