Мне не удалось найти способ установить FontFamily из файла .ttf, поскольку файлы .ttf не могут быть сохранены программой (файлы шрифтов заменяют среду выполнения).
Некоторые из моих попыток
Код: Выделить всё
String textFontName = "nameOfFont";
FontFamily textFont = new FontFamily(new Uri(AppDomain.CurrentDomain.BaseDirectory + "/themes/tmp/text/#" + textFontName, UriKind.Absolute), textFontName); // Not Work if font is not installed
Код: Выделить всё
textFont = new FontFamily("file:///" + AppDomain.CurrentDomain.BaseDirectory + "/themes/tmp/text/#" + textFontName);
Код: Выделить всё
textFont = new FontFamily(new Uri(AppDomain.CurrentDomain.BaseDirectory + "/themes/tmp/text/text.ttf", UriKind.Absolute), "./#" + textFontName);

Запускаем метод второй раз:

Я также использую AddFontResourceW, возвращает 1, и система сохраняет файл шрифта, но шрифт TextBlock по-прежнему является шрифтом по умолчанию:
Код: Выделить всё
AddFontResourceW(AppDomain.CurrentDomain.BaseDirectory + "themes\\tmp\\text\\text.ttf");
SendMessageW(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
Обновление: Я нашел это
Код: Выделить всё
textFont = new FontFamily("file:///" + AppDomain.CurrentDomain.BaseDirectory + "/themes/tmp/text/#" + textFontName);
Код: Выделить всё
textFont = new FontFamily(new Uri(AppDomain.CurrentDomain.BaseDirectory + "/themes/tmp/text/text.ttf", UriKind.Absolute), "./#" + textFontName);
Подробнее здесь: https://stackoverflow.com/questions/612 ... -sharp-wpf
Мобильная версия