// Purpose: interface of wxFont
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
enum wxFontFamily
{
wxFONTFAMILY_DEFAULT = wxDEFAULT, //!< Chooses a default font.
-
+
wxFONTFAMILY_DECORATIVE = wxDECORATIVE, //!< A decorative font.
wxFONTFAMILY_ROMAN = wxROMAN, //!< A formal, serif font.
wxFONTFAMILY_SCRIPT = wxSCRIPT, //!< A handwriting font.
wxFONTFAMILY_SWISS = wxSWISS, //!< A sans-serif font.
-
+
/// A fixed pitch font. Note that wxFont currently does not make distinctions
/// between @c wxFONTFAMILY_MODERN and @c wxFONTFAMILY_TELETYPE.
wxFONTFAMILY_MODERN = wxMODERN,
-
+
/// A teletype (i.e. monospaced) font.
- /// Monospace fonts have a fixed width like typewriters and often have strong angular
- /// or block serifs. Monospace font faces are often used code samples and have a simple,
+ /// Monospace fonts have a fixed width like typewriters and often have strong angular
+ /// or block serifs. Monospace font faces are often used code samples and have a simple,
/// functional font style.
/// See also wxFont::IsFixedWidth() for an easy way to test for monospace property.
wxFONTFAMILY_TELETYPE = wxTELETYPE,
-
+
/// Returned by wxFont::GetFamily() when the face name of the font cannot
/// be classified into one of the previous wxFontFamily values.
wxFONTFAMILY_UNKNOWN = wxFONTFAMILY_MAX,
/// The font is slanted in an italic style.
wxFONTSTYLE_ITALIC = wxITALIC,
-
- /// The font is slanted, but in a roman style.
+
+ /// The font is slanted, but in a roman style.
/// Note that under wxMSW this style is the same as @c wxFONTSTYLE_ITALIC.
wxFONTSTYLE_SLANT = wxSLANT,
/**
Font encodings.
-
+
See wxFont::SetEncoding().
*/
enum wxFontEncoding
/// (this is used by wxEncodingConverter and wxUTFFile only for now)
wxFONTENCODING_UNICODE,
- // alternative names for Far Eastern encodings
- // Chinese
wxFONTENCODING_GB2312 = wxFONTENCODING_CP936, //!< Simplified Chinese
wxFONTENCODING_BIG5 = wxFONTENCODING_CP950, //!< Traditional Chinese
-
- // Japanese (see http://zsigri.tripod.com/fontboard/cjk/jis.html)
- wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932 //!< Shift JIS
+ wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932, //!< Shift JIS
+ wxFONTENCODING_EUC_KR = wxFONTENCODING_CP949 //!< Korean
};
@param style
One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
@param weight
- Font weight, sometimes also referred to as font boldness.
+ Font weight, sometimes also referred to as font boldness.
One of the ::wxFontWeight enumeration values.
@param underline
The value can be @true or @false.
<TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
<TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
Default application encoding: this is the encoding set by calls to
- SetDefaultEncoding() and which may be set to, say, KOI8 to create all
- fonts by default with KOI8 encoding. Initially, the default application
+ SetDefaultEncoding() and which may be set to, say, KOI8 to create all
+ fonts by default with KOI8 encoding. Initially, the default application
encoding is the same as default system encoding.</TD></TR>
<TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
<TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
<TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
<TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
Default application encoding: this is the encoding set by calls to
- SetDefaultEncoding() and which may be set to, say, KOI8 to create all
- fonts by default with KOI8 encoding. Initially, the default application
+ SetDefaultEncoding() and which may be set to, say, KOI8 to create all
+ fonts by default with KOI8 encoding. Initially, the default application
encoding is the same as default system encoding.</TD></TR>
<TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
<TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
*/
virtual ~wxFont();
- /**
- Returns the current application's default encoding.
- @see @ref overview_fontencoding, SetDefaultEncoding()
+ /**
+ @name Getters
*/
- static wxFontEncoding GetDefaultEncoding();
-
+ //@{
+
/**
Returns the encoding of this font.
-
+
Note that under wxGTK the returned value is always @c wxFONTENCODING_UTF8.
-
+
@see SetEncoding()
*/
virtual wxFontEncoding GetEncoding() const;
-
+
/**
Returns the face name associated with the font, or the empty string if
there is no face information.
Gets the font family.
As described in ::wxFontFamily docs the returned value acts as a rough,
basic classification of the main font properties (look, spacing).
-
+
If the current font face name is not recognized by wxFont or by the
underlying system, @c wxFONTFAMILY_UNKNOWN is returned.
+ Note that currently this function is rather unreliable (@c wxFONTFAMILY_UNKNOWN
+ is returned in too many cases) and not particularly useful.
+ Font families mostly make sense only for font creation; see SetFamily().
+
@see SetFamily()
*/
virtual wxFontFamily GetFamily() const;
/**
Returns the platform-dependent string completely describing this font.
- Returned string is always non-empty.
+
+ Returned string is always non-empty unless the font is invalid (in
+ which case an assert is triggered).
Note that the returned string is not meant to be shown or edited by the user: a
typical use of this function is for serializing in string-form a wxFont object.
/**
Returns a user-friendly string for this font object.
- Returned string is always non-empty.
-
+
+ Returned string is always non-empty unless the font is invalid (in
+ which case an assert is triggered).
+
The string does not encode all wxFont infos under all platforms;
e.g. under wxMSW the font family is not present in the returned string.
/**
Gets the pixel size.
-
+
Note that under wxMSW if you passed to SetPixelSize() (or to the ctor)
a wxSize object with a null width value, you'll get a null width in
the returned object.
@see SetPixelSize()
*/
virtual wxSize GetPixelSize() const;
-
+
/**
Gets the font style. See ::wxFontStyle for a list of valid styles.
/**
Returns @true if the font is a fixed width (or monospaced) font,
@false if it is a proportional one or font is invalid.
-
+
Note that this function under some platforms is different than just testing
for the font family being equal to @c wxFONTFAMILY_TELETYPE because native
platform-specific functions are used for the check (resulting in a more
*/
virtual bool IsOk() const;
+ //@}
+
+
+ /**
+ @name Similar fonts creation
+
+ The functions in this section either modify the font in place or create
+ a new font similar to the given one but with its weight, style or size
+ changed.
+ */
//@{
+
/**
- This function takes the same parameters as the relative
- @ref wxFont::wxFont "wxFont constructor" and returns a new font
- object allocated on the heap.
- */
- static wxFont* New(int pointSize, wxFontFamily family, wxFontStyle style,
- wxFontWeight weight,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(int pointSize, wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(const wxSize& pixelSize,
- wxFontFamily family,
- wxFontStyle style,
- wxFontWeight weight,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(const wxSize& pixelSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+ Returns a bold version of this font.
+
+ @see MakeBold()
+
+ @since 2.9.1
+ */
+ wxFont Bold() const;
+
+ /**
+ Returns an italic version of this font.
+
+ @see MakeItalic()
+
+ @since 2.9.1
+ */
+ wxFont Italic() const;
+
+ /**
+ Returns a larger version of this font.
+
+ The font size is multiplied by @c 1.2, the factor of @c 1.2 being
+ inspired by the W3C CSS specification.
+
+ @see MakeLarger(), Smaller(), Scaled()
+
+ @since 2.9.1
+ */
+ wxFont Larger() const;
+
+ /**
+ Returns a smaller version of this font.
+
+ The font size is divided by @c 1.2, the factor of @c 1.2 being
+ inspired by the W3C CSS specification.
+
+ @see MakeSmaller(), Larger(), Scaled()
+
+ @since 2.9.1
+ */
+ wxFont Smaller() const;
+
+ /**
+ Changes this font to be bold.
+
+ @see Bold()
+
+ @since 2.9.1
+ */
+ wxFont& MakeBold();
+
+ /**
+ Changes this font to be italic.
+
+ @see Italic()
+
+ @since 2.9.1
+ */
+ wxFont& MakeItalic();
+
+ /**
+ Changes this font to be larger.
+
+ The font size is multiplied by @c 1.2, the factor of @c 1.2 being
+ inspired by the W3C CSS specification.
+
+ @see Larger(), MakeSmaller(), Scale()
+
+ @since 2.9.1
+ */
+ wxFont& MakeLarger();
+
+ /**
+ Changes this font to be smaller.
+
+ The font size is divided by @c 1.2, the factor of @c 1.2 being
+ inspired by the W3C CSS specification.
+
+ @see Smaller(), MakeLarger(), Scale()
+
+ @since 2.9.1
+ */
+ wxFont& MakeSmaller();
+
+ /**
+ Changes the size of this font.
+
+ The font size is multiplied by the given factor (which may be less than
+ 1 to create a smaller version of the font).
+
+ @see Scaled(), MakeLarger(), MakeSmaller()
+
+ @since 2.9.1
+ */
+ wxFont& Scale(float x);
+
+ /**
+ Returns a scaled version of this font.
+
+ The font size is multiplied by the given factor (which may be less than
+ 1 to create a smaller version of the font).
+
+ @see Scale(), Larger(), Smaller()
+
+ @since 2.9.1
+ */
+ wxFont Scaled(float x) const;
+
//@}
/**
- Sets the default font encoding.
+ @name Setters
- @see @ref overview_fontencoding, GetDefaultEncoding()
+ These functions internally recreate the native font object with the new
+ specified property.
*/
- static void SetDefaultEncoding(wxFontEncoding encoding);
-
+ //@{
+
/**
Sets the encoding for this font.
-
+
Note that under wxGTK this function has no effect (because the underlying
Pango library always uses @c wxFONTENCODING_UTF8).
-
+
@see GetEncoding()
*/
virtual void SetEncoding(wxFontEncoding encoding);
/**
Sets the facename for the font.
- Returns @true if the given face name exists; @false otherwise.
@param faceName
A valid facename, which should be on the end-user's system.
@remarks To avoid portability problems, don't rely on a specific face,
- but specify the font family instead or as well (see ::wxFontFamily).
- A suitable font will be found on the end-user's system.
- If both the family and the facename are specified, wxWidgets will
- first search for the specific face, and then for a font belonging
- to the same family.
+ but specify the font family instead (see ::wxFontFamily and SetFamily()).
+
+ @return @true if the given face name exists; if the face name doesn't exist
+ in the user's system then the font is invalidated (so that IsOk() will
+ return @false) and @false is returned.
@see GetFaceName(), SetFamily()
*/
/**
Sets the font family.
+ As described in ::wxFontFamily docs the given @a family value acts as a rough,
+ basic indication of the main font properties (look, spacing).
+
+ Note that changing the font family results in changing the font face name.
+
@param family
One of the ::wxFontFamily values.
For more detailed information about the allowed syntaxes you can look at the
documentation of the native API used for font-rendering
(e.g. @c pango_font_description_from_string on GTK).
-
+
Note that unlike SetNativeFontInfo(), this function doesn't always restore all
attributes of the wxFont object under all platforms; e.g. on wxMSW the font family
is not restored (because GetNativeFontInfoUserDesc doesn't return it on wxMSW).
/**
Sets the point size.
-
- 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.
+
+ 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
Size in points.
/**
Sets the pixel size.
-
+
The height parameter of @a pixelSize must be positive while the width
parameter may also be zero (to indicate that you're not interested in the
width of the characters: a suitable width will be chosen for best rendering).
-
- This feature (specifying the font pixel size) is directly supported only
- under wxMSW and wxGTK currently; under other platforms a font with the
+
+ This feature (specifying the font pixel size) is directly supported only
+ under wxMSW and wxGTK currently; under other platforms a font with the
closest size to the given one is found using binary search (this maybe slower).
@see GetPixelSize()
*/
virtual void SetPixelSize(const wxSize& pixelSize);
-
+
/**
Sets the font style.
*/
virtual void SetWeight(wxFontWeight weight);
+ //@}
+
+
/**
Inequality operator.
Assignment operator, using @ref overview_refcount "reference counting".
*/
wxFont& operator =(const wxFont& font);
+
+
+ // statics
+
+ /**
+ Returns the current application's default encoding.
+
+ @see @ref overview_fontencoding, SetDefaultEncoding()
+ */
+ static wxFontEncoding GetDefaultEncoding();
+
+ /**
+ Sets the default font encoding.
+
+ @see @ref overview_fontencoding, GetDefaultEncoding()
+ */
+ static void SetDefaultEncoding(wxFontEncoding encoding);
+
+ //@{
+ /**
+ This function takes the same parameters as the relative
+ @ref wxFont::wxFont "wxFont constructor" and returns a new font
+ object allocated on the heap.
+ */
+ static wxFont* New(int pointSize, wxFontFamily family, wxFontStyle style,
+ wxFontWeight weight,
+ bool underline = false,
+ const wxString& faceName = wxEmptyString,
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+ static wxFont* New(int pointSize, wxFontFamily family,
+ int flags = wxFONTFLAG_DEFAULT,
+ const wxString& faceName = wxEmptyString,
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+ static wxFont* New(const wxSize& pixelSize,
+ wxFontFamily family,
+ wxFontStyle style,
+ wxFontWeight weight,
+ bool underline = false,
+ const wxString& faceName = wxEmptyString,
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+ static wxFont* New(const wxSize& pixelSize,
+ wxFontFamily family,
+ int flags = wxFONTFLAG_DEFAULT,
+ const wxString& faceName = wxEmptyString,
+ wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
+ //@}
};
/**
Equivalent to wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).
-
+
@see wxSystemSettings
*/
wxFont wxNORMAL_FONT;