private void BuildFontSheetBitmap(Font font, Graphics charGraphics, Bitmap charBitmap, Graphics fontSheetGraphics)
{
var whiteBrush = Brushes.White;
var fontSheetX = 0;
var fontSheetY = 0;
for (var i = 0; i < NumChars; ++i)
{
charGraphics.Clear(Color.FromArgb(0, Color.Black));
charGraphics.DrawString(((char) (StartChar + i)).ToString(), font, whiteBrush, new PointF(0.0f, 0.0f));
var minX = GetCharMinX(charBitmap);
var maxX = GetCharMaxX(charBitmap);
var charWidth = maxX - minX + 1;
if (fontSheetX + charWidth >= _texWidth)
{
fontSheetX = 0;
fontSheetY += (int) (_charHeight) + 1;
}
_charRects[i] = new Rectangle(fontSheetX, fontSheetY, fontSheetX + charWidth, fontSheetY + _charHeight);
fontSheetGraphics.DrawImage(charBitmap, fontSheetX, fontSheetY, new System.Drawing.Rectangle(minX, 0, charWidth, _charHeight), GraphicsUnit.Pixel);
fontSheetX += charWidth + 1;
}
}