public bool Initialize(string FontName, float FontSize, FontStyle FontStyle, bool AntiAliased)
{
Debug.Assert(!_initialized);
var font = new Font(FontName, FontSize, FontStyle, GraphicsUnit.Pixel);
var hint = AntiAliased ? TextRenderingHint.AntiAlias : TextRenderingHint.SystemDefault;
var tempSize = (int) (FontSize * 2);
using (var charBitmap = new Bitmap(tempSize, tempSize, PixelFormat.Format32bppArgb))
{
using (var charGraphics = Graphics.FromImage(charBitmap))
{
charGraphics.PageUnit = GraphicsUnit.Pixel;
charGraphics.TextRenderingHint = hint;
MeasureChars(font, charGraphics);
using (var fontSheetBitmap = new Bitmap(_texWidth, _texHeight, PixelFormat.Format32bppArgb))
{
using (var fontSheetGraphics = Graphics.FromImage(fontSheetBitmap))
{
fontSheetGraphics.CompositingMode = CompositingMode.SourceCopy;
fontSheetGraphics.Clear(Color.FromArgb(0, Color.Black));
BuildFontSheetBitmap(font, charGraphics, charBitmap, fontSheetGraphics);
if (!BuildFontSheetTexture(fontSheetBitmap))
{
return false;
}
}
//System.Drawing.Bitmap bm = new System.Drawing.Bitmap(fontSheetBitmap);
//bm.Save(@"C:\temp\test.png");
}
}
}
_initialized = true;
return true;
}