byte[] to font code example

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

Tags:

Misc Example