WPF - сохранение шрифта на диск, а затем создание GlyphTypeface для исключения бросков шрифтов. Зачем?
Я слоняюсь с глифами и документами WPF и столкнулся с нулевым ссылочным исключением в среде .Net 4.
Я извлекаю и сохраняю шрифты истинного типа на диск как файлы .ttf, затем пытаюсь создать глифы на основе шрифтов. В первый раз я сохраняю шрифт на диск и создаю экземпляр GlyphTypeface на основе шрифтапосле создавая GlyphTypeface из другого шрифта в той же папке, я получаю исключение нулевой ссылки.
Скажем, у меня есть шрифты A и B. B не был сохранен на диск (A мог или не мог быть сохранен на диск; это не имеет значения):
1) сохранить B на диск в той же папке, что и A,
2) создать GlyphTypeface, используя шрифт A,
3) создать GlyphTypeface, используя шрифт B = исключение.
Null reference exception at:
at MS.Internal.FontCache.FontFaceLayoutInfo.IntMap.TryGetValue(Int32 key, UInt16& value)
at MS.Internal.FontCache.FontFaceLayoutInfo..ctor(Font font)
at System.Windows.Media.GlyphTypeface.Initialize(Uri typefaceSource, StyleSimulations styleSimulations)
at System.Windows.Media.GlyphTypeface..ctor(Uri typefaceSource)
Если я перезагружаю свое приложение и запускаю его снова (со шрифтом B уже на диске), шаг 3 не вызывает исключения.
Код для сохранения шрифта на диске - это просто запись раздела из двоичного потока и отпускание файла:
if (!File.Exists(filename))
{
using (FileStream fs = File.Create(filename, length))
{
fs.Write(m_data, m_index, length);
fs.Close();
}
}
Есть идеи? Я не хочу помещать каждый шрифт в отдельную папку ...
Спасибо за ваше время.