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

Есть идеи? Я не хочу помещать каждый шрифт в отдельную папку ...

Спасибо за ваше время.

Ответы на вопрос(5)

Ваш ответ на вопрос