Я сделал свои собственные шрифты .ttf для своей программы UWP и поместил их в папку «Ресурсы» (по сравнению с 2017/2019). Они хорошо работают, когда Документ обрабатывается в RichEditBox. Однако когда я сохраняю файл RTF, а затем открываю его, мои пользовательские шрифты игнорируются. Если я предварительно установил свои пользовательские шрифты в папку Windows \ Fonts, то в Open file загрузите документ со своими пользовательскими шрифтами. Похоже, без установки моих пользовательских шрифтов программа не связывает их с документом.
Опять же - я написал программу с RichEditBox и своими пользовательскими шрифтами в этой программе. После обработки - изменились шрифты, изменились стили и т. Д. - все идет по плану. Когда я сохраняю файл RTF с этой программой и открываю этот RTF с этой (той же) программой - таблица цветов в порядке, но мои шрифты не отображаются, хотя шрифты были скомпилированы с этой программой (BuildAction - Content; CopyToOutputDirectory - Copy Always). Чтобы упростить - я сделал кнопку с информацией в файле. Хотя шрифты скомпилированы (находятся в папке «Ресурсы»), программа не связывает их с документом.
На самом деле с помощью этой кнопки я попытался воспроизвести то, что описано здесь: RichEditBox (UWP) игнорирует шрифт и передний план при установке текста Rtf Однако в моем случае RichEditBox показывает только шрифты, установленные в каталоге Windows \ Fonts , Как преодолеть это и использовать ссылки на локальные шрифты, скомпилированные с моей программой, или заставить установщик установить шрифты в каталог Windows \ Fonts?
Как я могу использовать свои пользовательские шрифты (связать их с документом), не устанавливая их, или что мне нужно, чтобы моя программа UWP установила мои пользовательские шрифты на устройство пользователя во время установки самого себя?
Это код кнопки, которую я использовал для отображения текста:
private void Page_Click(object sender, RoutedEventArgs e)
{
string myRtfString = @"{\rtf1\fbidis\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil MyFont;}{\f1\fnil MyFont1;}{\f2\fnil MyFont2;}} {\colortbl ;\red0\green0\blue0;\red255\green255\blue255;\red255\green100\blue0;} {\*\generator Riched20 10.0.18362}\viewkind4\uc1 \pard\sl480\slmult1\qj\cf1\highlight2\f0\fs36 tt\highlight3\f1 g\f0 acgt\f2 c\highlight2\f0 tt\highlight0\par}";
editor.Document.SetText(TextSetOptions.FormatRtf, myRtfString);
}
Это XAML для RichEditBox:
<RichEditBox
x:Name="editor"
Height="200"
FontFamily="Assets/Fonts/MyFont.ttf#MyFont"
FontSize="24" RelativePanel.Below="openFileButton"
RelativePanel.AlignLeftWithPanel="True"
RelativePanel.AlignRightWithPanel="True" />