День добрый.
Нужна реализация загрузки шрифта из облака.
Нашел такое решение:
public static FontFamily LoadFontFamily(byte[] buffer, out PrivateFontCollection fontCollection)
{
var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
try
{
var ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
fontCollection = new PrivateFontCollection();
fontCollection.AddMemoryFont(ptr, buffer.Length);
return fontCollection.Families[0];
}
finally
{
handle.Free();
}
}
Далее вытаскиваю массив байтов шрифта из облака и используя этот метод получаю шрифт:
PrivateFontCollection fonts;
FontFamily family = LoadFontFamily(fontAsByteArray, out fonts);
font = new Font(family, fontProperties.Size, fontProperties.Style, GraphicsUnit.Pixel);
после этого использую в Graphics.DrawString:
graphics.DrawString(drawTextSettings.Text, font, brush, layoutRectangle, format);
Проблема заключается в том, что после второй отрисовке (вызова метода graphics.DrawString), а может и после пятой отрисовке начнёт постоянно падать метод graphics.DrawString с ошибкой
generic error occurred in gdi+. Шрифты бывают разные и загружаются каждый раз перед очередной отрисовке,
Если Font загружаю обычно с локальной папки, то ошибка не возникает.
Кто-нибудь встречался с такой необходимостью? Буду рад помощи :)