Установить FontFamily из файла в C# WPF - PullRequest
0 голосов
/ 18 апреля 2020

Я пишу программу, в которой есть два TextBlock с каждым заданным значением c FontFamily. Я установил каждый шрифт, используя переменную FontFamily. FontFamily переменные задаются в методе, который загружается из определенных .ttf файлов. Они могут или не могут быть установлены в системе.

Мне не удалось найти способ установить 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);

Первый запуск метода: textFont в порядке, но textFont2 (его шрифт был установлен ранее) не работает! Запустите метод во второй раз: textFont2 is все еще сломан, но где текстовый шрифт? 10

Я также использую AddFontResourceW, возвращает 1, и система содержит файл шрифта, но шрифт TextBlock по-прежнему является шрифтом по умолчанию:

AddFontResourceW(AppDomain.CurrentDomain.BaseDirectory + "themes\\tmp\\text\\text.ttf");
SendMessageW(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);

это программа WPF, поэтому PrivateFontCollection не работает. Какие еще есть способы установить шрифт из файла шрифта?

Обновление: Я обнаружил, что

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);

Работает, но пока шрифт не заменен. если я заменю text.ttf на другие шрифты (или заменю его на себя), шрифт будет поврежден ( это изображение )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...