Add wxFontInfo class to allow using named parameters for wxFont creation.

This helper class allows to create wxFonts using shorter and more readable
code, e.g.

	wxFont font(12, wxFONTFLAG_DEFAULT,
		    wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, true,
		    "DejaVu Sans");

can now be written simply as

	wxFont font(wxFontInfo(12).FaceName("DejaVu Sans").Underlined());

Remove the ctor from font flags added in r70445 as it's not needed any longer
now that we have this one and adding it resulted in compilation errors in the
existing code which compiled with 2.8 because of ambiguities between that ctor
and wxFont(int size, int family, int style, int weight. bool underlined, ...)
one, e.g.

	wxFont(12, wxFONTFAMILY_SWISS, wxNORMAL, wxNORMAL)

didn't compile any more but it does compile again now.

See #9907.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2013-04-30 10:27:38 +00:00
parent 659ca93c42
commit b960795ea8
15 changed files with 450 additions and 156 deletions

View File

@ -635,6 +635,7 @@ All (GUI):
- Add wxEVT_GRID_COL_AUTO_SIZE event (Igor Korot).
- Add chainable wxWizardPageSimple::Chain() overload.
- Add wxTextEntryDialog::SetMaxLength() (derEine).
- Add more convenient wxFont(wxFontInfo) ctor.
wxGTK:

View File

@ -38,6 +38,20 @@ public:
*/
wxFont() { }
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
/*! @abstract Platform-independent construction with individual properties
*/
#if FUTURE_WXWIN_COMPATIBILITY_3_0
@ -75,19 +89,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
/*! @abstract Construction with opaque wxNativeFontInfo
*/
wxFont(const wxNativeFontInfo& info)

View File

@ -23,6 +23,21 @@ class WXDLLIMPEXP_CORE wxFont : public wxFontBase
{
public:
wxFont() {}
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
wxFont(const wxNativeFontInfo& info) { Create(info); }
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
@ -60,19 +75,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -111,6 +111,145 @@ enum wxFontFlag
wxFONTFLAG_STRIKETHROUGH
};
// ----------------------------------------------------------------------------
// wxFontInfo describes a wxFont
// ----------------------------------------------------------------------------
class wxFontInfo
{
public:
// Default ctor uses the default font size appropriate for the current
// platform.
wxFontInfo()
{ InitPointSize(-1); }
// These ctors specify the font size, either in points or in pixels.
wxEXPLICIT wxFontInfo(int pointSize)
{ InitPointSize(pointSize); }
wxEXPLICIT wxFontInfo(const wxSize& pixelSize) : m_pixelSize(pixelSize)
{ Init(); }
// Setters for the various attributes. All of them return the object itself
// so that the calls to them could be chained.
wxFontInfo& Family(wxFontFamily family)
{ m_family = family; return *this; }
wxFontInfo& FaceName(const wxString& faceName)
{ m_faceName = faceName; return *this; }
wxFontInfo& Bold(bool bold = true)
{ SetFlag(wxFONTFLAG_BOLD, bold); return *this; }
wxFontInfo& Light(bool light = true)
{ SetFlag(wxFONTFLAG_LIGHT, light); return *this; }
wxFontInfo& Italic(bool italic = true)
{ SetFlag(wxFONTFLAG_ITALIC, italic); return *this; }
wxFontInfo& Slant(bool slant = true)
{ SetFlag(wxFONTFLAG_SLANT, slant); return *this; }
wxFontInfo& AntiAliased(bool antiAliased = true)
{ SetFlag(wxFONTFLAG_ANTIALIASED, antiAliased); return *this; }
wxFontInfo& Underlined(bool underlined = true)
{ SetFlag(wxFONTFLAG_UNDERLINED, underlined); return *this; }
wxFontInfo& Strikethrough(bool strikethrough = true)
{ SetFlag(wxFONTFLAG_STRIKETHROUGH, strikethrough); return *this; }
wxFontInfo& Encoding(wxFontEncoding encoding)
{ m_encoding = encoding; return *this; }
// Set all flags at once.
wxFontInfo& AllFlags(int flags)
{ m_flags = flags; return *this; }
// Accessors are mostly meant to be used by wxFont itself to extract the
// various pieces of the font description.
bool IsUsingSizeInPixels() const { return m_pixelSize != wxDefaultSize; }
int GetPointSize() const { return m_pointSize; }
wxSize GetPixelSize() const { return m_pixelSize; }
wxFontFamily GetFamily() const { return m_family; }
const wxString& GetFaceName() const { return m_faceName; }
wxFontStyle GetStyle() const
{
return m_flags & wxFONTFLAG_ITALIC
? wxFONTSTYLE_ITALIC
: m_flags & wxFONTFLAG_SLANT
? wxFONTSTYLE_SLANT
: wxFONTSTYLE_NORMAL;
}
wxFontWeight GetWeight() const
{
return m_flags & wxFONTFLAG_LIGHT
? wxFONTWEIGHT_LIGHT
: m_flags & wxFONTFLAG_BOLD
? wxFONTWEIGHT_BOLD
: wxFONTWEIGHT_NORMAL;
}
bool IsAntiAliased() const
{
return (m_flags & wxFONTFLAG_ANTIALIASED) != 0;
}
bool IsUnderlined() const
{
return (m_flags & wxFONTFLAG_UNDERLINED) != 0;
}
bool IsStrikethrough() const
{
return (m_flags & wxFONTFLAG_STRIKETHROUGH) != 0;
}
wxFontEncoding GetEncoding() const { return m_encoding; }
// Default copy ctor, assignment operator and dtor are OK.
private:
// Common part of all ctor, initializing everything except the size (which
// is initialized by the ctors themselves).
void Init()
{
m_family = wxFONTFAMILY_DEFAULT;
m_flags = wxFONTFLAG_DEFAULT;
m_encoding = wxFONTENCODING_DEFAULT;
}
void InitPointSize(int pointSize)
{
Init();
m_pointSize = pointSize;
m_pixelSize = wxDefaultSize;
}
// Turn on or off the given bit in m_flags depending on the value of the
// boolean argument.
void SetFlag(int flag, bool on)
{
if ( on )
m_flags |= flag;
else
m_flags &= ~flag;
}
// The size information: if m_pixelSize is valid (!= wxDefaultSize), then
// it is used. Otherwise m_pointSize is used, taking into account that if
// it is == -1, it means that the platform dependent font size should be
// used.
int m_pointSize;
wxSize m_pixelSize;
wxFontFamily m_family;
wxString m_faceName;
int m_flags;
wxFontEncoding m_encoding;
};
// ----------------------------------------------------------------------------
// wxFontBase represents a font object
// ----------------------------------------------------------------------------
@ -124,6 +263,7 @@ public:
derived classes should provide the following ctors:
wxFont();
wxFont(const wxFontInfo& info);
wxFont(const wxString& nativeFontInfoString);
wxFont(const wxNativeFontInfo& info);
wxFont(int size,
@ -293,7 +433,7 @@ protected:
virtual wxFontFamily DoGetFamily() const = 0;
// Helper functions to recover wxFONTSTYLE/wxFONTWEIGHT and underlined flg
// Helper functions to recover wxFONTSTYLE/wxFONTWEIGHT and underlined flag
// values from flags containing a combination of wxFONTFLAG_XXX.
static wxFontStyle GetStyleFromFlags(int flags)
{

View File

@ -19,7 +19,8 @@ class WXDLLIMPEXP_CORE wxFont : public wxFontBase
public:
wxFont() { }
// wxGTK-specific
wxFont(const wxFontInfo& info);
wxFont(const wxString& nativeFontInfoString)
{
Create(nativeFontInfoString);
@ -63,12 +64,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -32,7 +32,20 @@ public:
// ctors and such
wxFont() { }
// wxGTK-specific
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
wxFont(const wxString& fontname)
{
Create(fontname);
@ -76,19 +89,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -28,6 +28,20 @@ public:
// ctors and such
wxFont() { }
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
wxFont(const wxNativeFontInfo& info);
#if FUTURE_WXWIN_COMPATIBILITY_3_0
@ -66,19 +80,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -24,6 +24,8 @@ public:
// ctors and such
wxFont() { }
wxFont(const wxFontInfo& info);
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@ -91,12 +93,6 @@ public:
Create(info, hFont);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxFont(const wxString& fontDesc);

View File

@ -27,6 +27,20 @@ public:
// ctors and such
wxFont() { }
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@ -63,19 +77,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -37,6 +37,20 @@ public:
// ctors and such
wxFont() { }
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
wxFont( wxOSXSystemFont systemFont );
#if wxOSX_USE_COCOA
@ -79,19 +93,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -21,6 +21,20 @@ public:
// ctors and such
wxFont() { }
wxFont(const wxFontInfo& info)
{
Create(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.GetFaceName(),
info.GetEncoding());
if ( info.IsUsingSizeInPixels() )
SetPixelSize(info.GetPixelSize());
}
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@ -57,19 +71,6 @@ public:
SetPixelSize(pixelSize);
}
wxFont(int pointSize,
wxFontFamily family,
int flags = wxFONTFLAG_DEFAULT,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
{
Create(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
}
bool Create(int size,
wxFontFamily family,
wxFontStyle style,

View File

@ -270,12 +270,155 @@ enum wxFontEncoding
};
/**
Description of wxFont.
This class is a helper used for wxFont creation using named parameter
idiom: it allows to specify various wxFont attributes using the chained
calls to its clearly named methods instead of passing them in the fixed
order to wxFont constructors.
For example, to create an italic font with the given face name and size you
could use:
@code
wxFont font(wxFontInfo(12).FaceName().Italic());
@endcode
Notice that all of the methods of this object return a reference to the
object itself, allowing the calls to them to be chained as in the example
above.
All methods taking boolean parameters can be used to turn the specified
font attribute on or off and turn it on by default.
@since 2.9.5
*/
class wxFontInfo
{
public:
/**
Default constructor uses the default font size for the current
platform.
*/
wxFontInfo();
/**
Constructor setting the font size in points to use.
@see wxFont::SetPointSize()
*/
explicit wxFontInfo(int pointSize);
/**
Constructor setting the font size in pixels to use.
@see wxFont::SetPixelSize()
*/
explicit wxFontInfo(const wxSize& pixelSize);
/**
Set the font family.
The family is a generic portable way of referring to fonts without
specifying a precise face name. This parameter must be one of the
::wxFontFamily enumeration values.
If the FaceName() is used, then it overrides the font family.
@see wxFont::SetFamily()
*/
wxFontInfo& Family(wxFontFamily family);
/**
Set the font face name to use.
Face names are not portable, so prefer to use Family() in portable
code.
@see wxFont::SetFaceName()
*/
wxFontInfo& FaceName(const wxString& faceName);
/**
Use a bold version of the font.
@see ::wxFontWeight, wxFont::SetWeight()
*/
wxFontInfo& Bold(bool bold = true);
/**
Use a lighter version of the font.
@see ::wxFontWeight, wxFont::SetWeight()
*/
wxFontInfo& Light(bool light = true);
/**
Use an italic version of the font.
@see ::wxFontStyle, wxFont::SetStyle()
*/
wxFontInfo& Italic(bool italic = true);
/**
Use a slanted version of the font.
@see ::wxFontStyle, wxFont::SetStyle()
*/
wxFontInfo& Slant(bool slant = true);
/**
Set anti-aliasing flag.
Force the use of anti-aliasing on or off.
Currently this is not implemented, i.e. using this method doesn't do
anything.
*/
wxFontInfo& AntiAliased(bool antiAliased = true);
/**
Use an underlined version of the font.
*/
wxFontInfo& Underlined(bool underlined = true);
/**
Use a strike-through version of the font.
Currently this is only implemented in wxMSW and wxGTK.
*/
wxFontInfo& Strikethrough(bool strikethrough = true);
/**
Set the font encoding to use.
This is mostly unneeded in Unicode builds of wxWidgets.
@see ::wxFontEncoding, wxFont::SetEncoding()
*/
wxFontInfo& Encoding(wxFontEncoding encoding);
/**
Set all the font attributes at once.
See ::wxFontFlag for the various flags that can be used.
*/
wxFontInfo& AllFlags(int flags);
};
/**
@class wxFont
A font is an object which determines the appearance of text.
Fonts are used for drawing text to a device context, and setting the appearance
of a window's text.
of a window's text, see wxDC::SetFont() and wxWindow::SetFont().
The easiest way to create a custom font is to use wxFontInfo object to
specify the font attributes and then use wxFont::wxFont(const wxFontInfo&)
constructor. Alternatively, you could start with one of the pre-defined
fonts or use wxWindow::GetFont() and modify the font, e.g. by increasing
its size using MakeLarger() or changing its weight using MakeBold().
This class uses @ref overview_refcount "reference counting and copy-on-write"
internally so that assignments between two instances of this class are very
@ -308,9 +451,36 @@ public:
*/
wxFont(const wxFont& font);
/**
Creates a font object using the specified font description.
This is the preferred way to create font objects as using this ctor
results in more readable code and it is also extensible, e.g. it could
continue to be used if support for more font attributes is added in the
future. For example, this constructor provides the only way of creating
fonts with strike-through style.
Example of creating a font using this ctor:
@code
wxFont font(wxFontInfo(10).Bold().Underlined());
@endcode
@since 2.9.5
*/
wxFont(const wxFontInfo& font);
/**
Creates a font object with the specified attributes and size in points.
Notice that the use of this constructor is often more verbose and less
readable than the use of constructor from wxFontInfo, e.g. the example
in that constructor documentation would need to be written as
@code
wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_BOLD, true);
@endcode
which is longer and less clear.
@param pointSize
Size in points. See SetPointSize() for more info.
@param family
@ -357,6 +527,10 @@ public:
/**
Creates a font object with the specified attributes and size in pixels.
Notice that the use of this constructor is often more verbose and less
readable than the use of constructor from wxFontInfo, consider using
that constructor instead.
@param pixelSize
Size in pixels. See SetPixelSize() for more info.
@param family
@ -400,25 +574,6 @@ public:
const wxString& faceName = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
/**
Creates a font object using font flags.
This constructor is similar to the constructors above except it
specifies the font styles such as underlined, italic, bold, ... in a
single @a flags argument instead of using separate arguments for them.
This parameter can be a combination of ::wxFontFlag enum elements.
The meaning of the remaining arguments is the same as in the other
constructors, please see their documentation for details.
Notice that this constructor provides the only way of creating fonts
with strike-through style.
@since 2.9.4
*/
wxFont(int pointSize, wxFontFamily family, int flags,
const wxString& faceName = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
/**
Constructor from font description string.
@ -844,7 +999,7 @@ public:
/**
Sets the point size.
The <em>point size</em> is defined as 1/72 of the anglo-Saxon inch
The <em>point size</em> is defined as 1/72 of the Anglo-Saxon inch
(25.4 mm): it is approximately 0.0139 inch or 352.8 um.
@param pointSize
@ -981,6 +1136,9 @@ public:
This function takes the same parameters as the relative
@ref wxFont::wxFont "wxFont constructor" and returns a new font
object allocated on the heap.
Their use is discouraged, use wxFont constructor from wxFontInfo
instead.
*/
static wxFont* New(int pointSize, wxFontFamily family, wxFontStyle style,
wxFontWeight weight,

View File

@ -518,9 +518,7 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly,
if ( !facename.empty() )
{
wxFont font(wxNORMAL_FONT->GetPointSize(),
wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_NORMAL, false, facename, encoding);
wxFont font(wxFontInfo().FaceName(facename).Encoding(encoding));
DoChangeFont(font);
}
@ -978,10 +976,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event))
// and now create the correct font
if ( !DoEnumerateFamilies(false, fontenc, true /* silent */) )
{
wxFont font(wxNORMAL_FONT->GetPointSize(),
wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_NORMAL, false /* !underlined */,
wxEmptyString /* facename */, fontenc);
wxFont font(wxFontInfo(wxNORMAL_FONT->GetPointSize()).Encoding(fontenc));
if ( font.IsOk() )
{
DoChangeFont(font);

View File

@ -278,18 +278,20 @@ wxFont::wxFont(const wxNativeFontInfo& info)
SetStrikethrough(true);
}
wxFont::wxFont(int pointSize,
wxFontFamily family,
int flags,
const wxString& face,
wxFontEncoding encoding)
wxFont::wxFont(const wxFontInfo& info)
{
m_refData = new wxFontRefData(pointSize, family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
GetStrikethroughFromFlags(flags),
face, encoding);
m_refData = new wxFontRefData(info.GetPointSize(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.IsStrikethrough(),
info.GetFaceName(),
info.GetEncoding());
wxSize pixelSize = info.GetPixelSize();
if ( pixelSize != wxDefaultSize )
SetPixelSize(pixelSize);
}
bool wxFont::Create( int pointSize,

View File

@ -804,18 +804,18 @@ wxFont::wxFont(const wxString& fontdesc)
(void)Create(info);
}
wxFont::wxFont(int pointSize,
wxFontFamily family,
int flags,
const wxString& face,
wxFontEncoding encoding)
wxFont::wxFont(const wxFontInfo& info)
{
m_refData = new wxFontRefData(pointSize, wxDefaultSize, false,
family,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
false, face, encoding);
m_refData = new wxFontRefData(info.GetPointSize(),
info.GetPixelSize(),
info.IsUsingSizeInPixels(),
info.GetFamily(),
info.GetStyle(),
info.GetWeight(),
info.IsUnderlined(),
info.IsStrikethrough(),
info.GetFaceName(),
info.GetEncoding());
}
bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)