byte[] to font
// loads font family from file
public static FontFamily LoadFontFamily(string fileName)
{
using(var pfc = new PrivateFontCollection())
{
pfc.AddFontFile(fileName);
return pfc.Families[0];
}
}
// Load font family from stream
public static FontFamily LoadFontFamily(Stream stream)
{
var buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
return LoadFontFamily(buffer);
}
// load font family from byte array
public static FontFamily LoadFontFamily(byte[] buffer)
{
var handle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
try
{
var ptr = Marshal.UnsafeAddrOfPinnedArrayElement(buffer, 0);
using (var pvc = new PrivateFontCollection())
{
pvc.AddMemoryFont(ptr, buffer.Length);
return pvc.Families[0];
}
}
finally
{
handle.Free();
}
}