private static IntPtr CreateFontObject(Font font, bool antiAliasing) { NativeStructs.LOGFONT logFont = new NativeStructs.LOGFONT(); font.ToLogFont(logFont); int nHeight = logFont.lfHeight; int nWidth = logFont.lfWidth; int nEscapement = logFont.lfEscapement; int nOrientation = logFont.lfOrientation; int fnWeight = logFont.lfWeight; uint fdwItalic = logFont.lfItalic; uint fdwUnderline = logFont.lfUnderline; uint fdwStrikeOut = logFont.lfStrikeOut; uint fdwCharSet = logFont.lfCharSet; uint fdwOutputPrecision = logFont.lfOutPrecision; uint fdwClipPrecision = logFont.lfClipPrecision; uint fdwQuality; if (antiAliasing) { fdwQuality = NativeConstants.ANTIALIASED_QUALITY; } else { fdwQuality = NativeConstants.NONANTIALIASED_QUALITY; } uint fdwPitchAndFamily = logFont.lfPitchAndFamily; string lpszFace = logFont.lfFaceName; IntPtr hFont = SafeNativeMethods.CreateFontW( nHeight, nWidth, nEscapement, nOrientation, fnWeight, fdwItalic, fdwUnderline, fdwStrikeOut, fdwCharSet, fdwOutputPrecision, fdwClipPrecision, fdwQuality, fdwPitchAndFamily, lpszFace); if (hFont == IntPtr.Zero) { NativeMethods.ThrowOnWin32Error("CreateFontW returned NULL"); } return(hFont); }