I\'d like to use a non-standard font for my .net 3.0 Winforms application.
This font might be installed on some of my user\'s computer, but it will clearly be missing on
Here's a blog article I wrote that shows a way to embed fonts as resources in your application (no dll imports necessary :).
Embedding Fonts in your .Net Application
Here's the class I create where all the magic happens. The blog article includes instructions and an example of using it.
using System.Drawing;
using System.Drawing.Text;
using System.Runtime.InteropServices;
namespace EmbeddedFontsExample.Fonts
{
public class ResFonts
{
private static PrivateFontCollection sFonts;
static ResFonts()
{
sFonts = new PrivateFontCollection();
// The order the fonts are added to the collection
// should be the same as the order they are added
// to the ResFontFamily enum.
AddFont(MyFonts.Consolas);
}
private static void AddFont(byte[] font)
{
var buffer = Marshal.AllocCoTaskMem(font.Length);
Marshal.Copy(font, 0, buffer, font.Length);
sFonts.AddMemoryFont(buffer, font.Length);
}
public static Font Create(
ResFontFamily family,
float emSize,
FontStyle style = FontStyle.Regular,
GraphicsUnit unit = GraphicsUnit.Pixel)
{
var fam = sFonts.Families[(int)family];
return new Font(fam, emSize, style, unit);
}
}
public enum ResFontFamily
{
/// Consolas
Consolas = 0
}
}