private void CreateFont(string familyName, float emSize, FontStyle style, GraphicsUnit unit, byte charSet, bool isVertical)
        {
#if ONLY_1_1
            if (familyName == null)
            {
                throw new ArgumentNullException("familyName");
            }
#endif
#if NET_2_0
            originalFontName = familyName;
#endif
            FontFamily family;
            // NOTE: If family name is null, empty or invalid,
            // MS creates Microsoft Sans Serif font.
            try
            {
                family = new FontFamily(familyName);
            }
            catch (Exception)
            {
                family = FontFamily.GenericSansSerif;
            }

            setProperties(family, emSize, style, unit, charSet, isVertical);
            Status status = GDIPlus.GdipCreateFont(family.NativeObject, emSize, style, unit, out fontObject);

            if (status == Status.FontStyleNotFound)
            {
                throw new ArgumentException(Locale.GetText("Style {0} isn't supported by font {1}.", style.ToString(), familyName));
            }

            GDIPlus.CheckStatus(status);
        }
        public Font(Font prototype, FontStyle newStyle)
        {
            // no null checks, MS throws a NullReferenceException if original is null
            setProperties(prototype.FontFamily, prototype.Size, newStyle, prototype.Unit, prototype.GdiCharSet, prototype.GdiVerticalFont);

            Status status = GDIPlus.GdipCreateFont(_fontFamily.NativeObject, Size, Style, Unit, out fontObject);

            GDIPlus.CheckStatus(status);
        }
        public Font(FontFamily family, float emSize, FontStyle style,
                    GraphicsUnit unit, byte gdiCharSet, bool gdiVerticalFont)
        {
            if (family == null)
            {
                throw new ArgumentNullException("family");
            }

            Status status;

            setProperties(family, emSize, style, unit, gdiCharSet, gdiVerticalFont);
            status = GDIPlus.GdipCreateFont(family.NativeObject, emSize, style, unit, out fontObject);
            GDIPlus.CheckStatus(status);
        }