В пространстве имен System.Drawing.Text
есть метод AddMemoryFont
, который загружает шрифт из памяти (он берет указатель на блок памяти, поэтому вам нужно будет выполнить некоторую небезопасную операцию, чтобы получить указатель на ваш байт массив - я нашел пример здесь ). Подробнее о методе на MSDN .
Существует также связанный вопрос StackOverflow , показывающий, как импортировать функцию Win API для прямой загрузки шрифта (в случае, если вышеуказанный метод .NET не работает).
РЕДАКТИРОВАТЬ Перевод ключевой части из Visual Basic может выглядеть следующим образом (хотя еще не проверял):
// This should be probably a field of some class
PrivateFontCollection pfc = new PrivateFontCollection();
// allocate memory and copy byte[] to the location
IntPtr data = Marshal.AllocCoTaskMem(yourByteArray.Length);
Marshal.Copy(yourFontArray, 0, data, yourFontArray.Length);
// pass the font to the font collection
pfc.AddMemoryFont(data, fontStream.Length)
// Free the unsafe memory
Marshal.FreeCoTaskMem(data)
Как только вы это сделаете, вы сможете ссылаться на шрифт, используя его обычное имя.