Эта ошибка приводила меня в бешенство, но я думаю, что лучше понимаю, что происходит сейчас.
Для тестирования я использовал следующий XAML:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Glyphs
FontUri="C:\Users\Public\Desktop\A.ttf"
FontRenderingEmSize="100"
Fill="Black"
UnicodeString="Test"/>
</Page>
Используя приложение XamlPadX , которое работает в среде выполнения .NET 2, я мог надежно отобразить XAML независимо от того, где я разместил шрифт.
При использовании приложения Kaxaml , которое выполняется во время выполнения .NET 4, XAML часто не может отображаться в зависимости от того, где я разместил шрифт в файловой системе. Перемещая файл шрифта и переименовывая, я пытался найти образец в том, что было разрешено. Тем не менее, было очень трудно увидеть шаблон.
Например, хранение шрифта в указанном ниже пути приведет к отображению глифов:
C:\Users\Public\Desktop\A.ttf - OK
Переименование его с A.ttf
на B.ttf
приведет к исключению:
C:\Users\Public\Desktop\B.ttf - throws exception
Изменение расширения также вызовет исключение:
C:\Users\Public\Desktop\A.odttf - throws exception
Переименование частей пути иногда приводило к хаосу, но я не мог видеть никакой картины. Первоначально я использовал временный путь, и получение исключений привело меня к этому вопросу и ответу о том, что этот путь не используется. Однако позже я смог использовать этот путь, если имя файла A.ttf
, а не B.ttf
, поэтому избегание временного пути не является надежным решением.
В какой-то момент во время моих тестов с использованием моего собственного приложения WPF имя файла B.ttf
неожиданно начало работать. Однако мне пришлось перезапустить приложение Kaxaml, чтобы оно приняло имя файла B.ttf
. Кроме того, в этот момент имя файла A.odttf
все еще вызывало исключения.
Я предлагаю использовать приложение, такое как Kaxaml, или создать небольшое приложение WPF, чтобы проверить, какие имена файлов шрифтов являются приемлемыми, а затем использовать их. Однако я боюсь, что природа этой ошибки такова, что «хорошее» имя файла шрифта может стать «плохим» в более поздний момент времени. Только время покажет.