Мне не удалось найти способ установить 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);
Запустите метод во второй раз: textFont2 все еще не работает, но где находится textFont?
Я также использую 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
Мобильная версия