Index: Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs =================================================================== diff -u -r8a2cd31955ec28ee203d506300caa6a89cddb897 -r2d7021057869098254eacbaa264622956f49a870 --- Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs (.../FontHelper.cs) (revision 8a2cd31955ec28ee203d506300caa6a89cddb897) +++ Core/Common/src/Core.Common.Util/Drawing/FontHelper.cs (.../FontHelper.cs) (revision 2d7021057869098254eacbaa264622956f49a870) @@ -21,6 +21,7 @@ using System; using System.Drawing; +using System.Drawing.Drawing2D; using System.Drawing.Text; using System.Linq; using System.Runtime.InteropServices; @@ -63,6 +64,37 @@ return new Font(privateFontCollection.Families.Last(), 14.0F); } + /// + /// Creates a from the given and . + /// + /// The font to use. + /// The unicode to create an image from. + /// A . + /// Thrown when any parameter is null. + public static Bitmap CreateBitmapFromFont(Font font, string unicode) + { + if (font == null) + { + throw new ArgumentNullException(nameof(font)); + } + + if (unicode == null) + { + throw new ArgumentNullException(nameof(unicode)); + } + + var bitmap = new Bitmap(51, 51); + Graphics graphics = Graphics.FromImage(bitmap); + + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + graphics.DrawString(unicode, new Font(font.FontFamily, 48, GraphicsUnit.Pixel), Brushes.Black, 0, 0); + graphics.Flush(); + + return bitmap; + } + [DllImport("gdi32.dll")] private static extern IntPtr AddFontMemResourceEx(IntPtr pbFont, uint cbFont, IntPtr pdv, [In] ref uint pcFonts); Index: Core/Common/test/Core.Common.Util.Test/Drawing/FontHelperTest.cs =================================================================== diff -u -r8a2cd31955ec28ee203d506300caa6a89cddb897 -r2d7021057869098254eacbaa264622956f49a870 --- Core/Common/test/Core.Common.Util.Test/Drawing/FontHelperTest.cs (.../FontHelperTest.cs) (revision 8a2cd31955ec28ee203d506300caa6a89cddb897) +++ Core/Common/test/Core.Common.Util.Test/Drawing/FontHelperTest.cs (.../FontHelperTest.cs) (revision 2d7021057869098254eacbaa264622956f49a870) @@ -67,5 +67,46 @@ var exception = Assert.Throws(Call); Assert.AreEqual("privateFontCollection", exception.ParamName); } + + [Test] + public void CreateBitmapFromFont_FontNull_ThrowsArgumentNullException() + { + // Call + void Call() => FontHelper.CreateBitmapFromFont(null, ""); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("font", exception.ParamName); + } + + [Test] + public void CreateBitmapFromFont_UnicodeNull_ThrowsArgumentNullException() + { + // Setup + var privateFontCollection = new PrivateFontCollection(); + Font font = FontHelper.CreateFont(Resources.ValidFont, privateFontCollection); + + // Call + void Call() => FontHelper.CreateBitmapFromFont(font, null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("unicode", exception.ParamName); + } + + [Test] + public void CreateBitmapFromFont_ValidData_CreatesExpectedBitmap() + { + // Setup + var privateFontCollection = new PrivateFontCollection(); + Font font = FontHelper.CreateFont(Resources.ValidFont, privateFontCollection); + + // Call + Bitmap bitmap = FontHelper.CreateBitmapFromFont(font, "I"); + + // Assert + Assert.AreEqual(51, bitmap.Height); + Assert.AreEqual(51, bitmap.Width); + } } } \ No newline at end of file