1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxFont
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
11 Standard font families: these are used mainly during wxFont creation to specify
12 the generic properties of the font without hardcoding in the sources a specific
15 wxFontFamily thus allows to group the font face names of fonts with similar
16 properties. Most wxWidgets ports use lists of fonts for each font family
17 inspired by the data taken from http://www.codestyle.org/css/font-family.
21 wxFONTFAMILY_DEFAULT
= wxDEFAULT
, //!< Chooses a default font.
23 wxFONTFAMILY_DECORATIVE
= wxDECORATIVE
, //!< A decorative font.
24 wxFONTFAMILY_ROMAN
= wxROMAN
, //!< A formal, serif font.
25 wxFONTFAMILY_SCRIPT
= wxSCRIPT
, //!< A handwriting font.
26 wxFONTFAMILY_SWISS
= wxSWISS
, //!< A sans-serif font.
28 /// A fixed pitch font. Note that wxFont currently does not make distinctions
29 /// between @c wxFONTFAMILY_MODERN and @c wxFONTFAMILY_TELETYPE.
30 wxFONTFAMILY_MODERN
= wxMODERN
,
32 /// A teletype (i.e. monospaced) font.
33 /// Monospace fonts have a fixed width like typewriters and often have strong angular
34 /// or block serifs. Monospace font faces are often used code samples and have a simple,
35 /// functional font style.
36 /// See also wxFont::IsFixedWidth() for an easy way to test for monospace property.
37 wxFONTFAMILY_TELETYPE
= wxTELETYPE
,
40 /// Invalid font family value, returned by wxFont::GetFamily() when the
41 /// font is invalid for example.
42 wxFONTFAMILY_UNKNOWN
= wxFONTFAMILY_MAX
50 /// The font is drawn without slant.
51 wxFONTSTYLE_NORMAL
= wxNORMAL
,
53 /// The font is slanted in an italic style.
54 wxFONTSTYLE_ITALIC
= wxITALIC
,
56 /// The font is slanted, but in a roman style.
57 /// Note that under wxMSW this style is the same as @c wxFONTSTYLE_ITALIC.
58 wxFONTSTYLE_SLANT
= wxSLANT
,
68 wxFONTWEIGHT_NORMAL
= wxNORMAL
, //!< Normal font.
69 wxFONTWEIGHT_LIGHT
= wxLIGHT
, //!< Light font.
70 wxFONTWEIGHT_BOLD
= wxBOLD
, //!< Bold font.
77 The elements of this enum correspond to CSS absolute size specifications,
78 see http://www.w3.org/TR/CSS21/fonts.html#font-size-props
80 @see wxFont::SetSymbolicSize()
84 enum wxFontSymbolicSize
86 wxFONTSIZE_XX_SMALL
= -3, //!< Extra small.
87 wxFONTSIZE_X_SMALL
, //!< Very small.
88 wxFONTSIZE_SMALL
, //!< Small.
89 wxFONTSIZE_MEDIUM
, //!< Normal.
90 wxFONTSIZE_LARGE
, //!< Large.
91 wxFONTSIZE_X_LARGE
, //!< Very large.
92 wxFONTSIZE_XX_LARGE
//!< Extra large.
96 The font flag bits for the new font ctor accepting one combined flags word.
100 /// no special flags: font with default weight/slant/anti-aliasing
101 wxFONTFLAG_DEFAULT
= 0,
103 /// slant flags (default: no slant)
104 wxFONTFLAG_ITALIC
= 1 << 0,
105 wxFONTFLAG_SLANT
= 1 << 1,
107 /// weight flags (default: medium)
108 wxFONTFLAG_LIGHT
= 1 << 2,
109 wxFONTFLAG_BOLD
= 1 << 3,
111 /// anti-aliasing flag: force on or off (default: the current system default)
112 wxFONTFLAG_ANTIALIASED
= 1 << 4,
113 wxFONTFLAG_NOT_ANTIALIASED
= 1 << 5,
115 /// Underlined style (not underlined by default).
116 wxFONTFLAG_UNDERLINED
= 1 << 6,
118 /// Strike-through style (only supported in wxMSW and wxGTK currently).
119 wxFONTFLAG_STRIKETHROUGH
= 1 << 7,
121 /// the mask of all currently used flags
122 wxFONTFLAG_MASK
= wxFONTFLAG_ITALIC
|
126 wxFONTFLAG_ANTIALIASED
|
127 wxFONTFLAG_NOT_ANTIALIASED
|
128 wxFONTFLAG_UNDERLINED
|
129 wxFONTFLAG_STRIKETHROUGH
137 See wxFont::SetEncoding().
141 /// Default system encoding.
142 wxFONTENCODING_SYSTEM
= -1, // system default
144 /// Default application encoding.
145 wxFONTENCODING_DEFAULT
, // current default encoding
147 // ISO8859 standard defines a number of single-byte charsets
148 wxFONTENCODING_ISO8859_1
, //!< West European (Latin1)
149 wxFONTENCODING_ISO8859_2
, //!< Central and East European (Latin2)
150 wxFONTENCODING_ISO8859_3
, //!< Esperanto (Latin3)
151 wxFONTENCODING_ISO8859_4
, //!< Baltic (old) (Latin4)
152 wxFONTENCODING_ISO8859_5
, //!< Cyrillic
153 wxFONTENCODING_ISO8859_6
, //!< Arabic
154 wxFONTENCODING_ISO8859_7
, //!< Greek
155 wxFONTENCODING_ISO8859_8
, //!< Hebrew
156 wxFONTENCODING_ISO8859_9
, //!< Turkish (Latin5)
157 wxFONTENCODING_ISO8859_10
, //!< Variation of Latin4 (Latin6)
158 wxFONTENCODING_ISO8859_11
, //!< Thai
159 wxFONTENCODING_ISO8859_12
, //!< doesn't exist currently, but put it
160 //!< here anyhow to make all ISO8859
161 //!< consecutive numbers
162 wxFONTENCODING_ISO8859_13
, //!< Baltic (Latin7)
163 wxFONTENCODING_ISO8859_14
, //!< Latin8
164 wxFONTENCODING_ISO8859_15
, //!< Latin9 (a.k.a. Latin0, includes euro)
165 wxFONTENCODING_ISO8859_MAX
,
167 // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
168 wxFONTENCODING_KOI8
, //!< KOI8 Russian
169 wxFONTENCODING_KOI8_U
, //!< KOI8 Ukrainian
170 wxFONTENCODING_ALTERNATIVE
, //!< same as MS-DOS CP866
171 wxFONTENCODING_BULGARIAN
, //!< used under Linux in Bulgaria
173 // what would we do without Microsoft? They have their own encodings
175 wxFONTENCODING_CP437
, //!< original MS-DOS codepage
176 wxFONTENCODING_CP850
, //!< CP437 merged with Latin1
177 wxFONTENCODING_CP852
, //!< CP437 merged with Latin2
178 wxFONTENCODING_CP855
, //!< another cyrillic encoding
179 wxFONTENCODING_CP866
, //!< and another one
181 wxFONTENCODING_CP874
, //!< WinThai
182 wxFONTENCODING_CP932
, //!< Japanese (shift-JIS)
183 wxFONTENCODING_CP936
, //!< Chinese simplified (GB)
184 wxFONTENCODING_CP949
, //!< Korean (Hangul charset)
185 wxFONTENCODING_CP950
, //!< Chinese (traditional - Big5)
186 wxFONTENCODING_CP1250
, //!< WinLatin2
187 wxFONTENCODING_CP1251
, //!< WinCyrillic
188 wxFONTENCODING_CP1252
, //!< WinLatin1
189 wxFONTENCODING_CP1253
, //!< WinGreek (8859-7)
190 wxFONTENCODING_CP1254
, //!< WinTurkish
191 wxFONTENCODING_CP1255
, //!< WinHebrew
192 wxFONTENCODING_CP1256
, //!< WinArabic
193 wxFONTENCODING_CP1257
, //!< WinBaltic (same as Latin 7)
194 wxFONTENCODING_CP1258
, //!< WinVietnamese (since 2.9.4)
195 wxFONTENCODING_CP1361
, //!< Johab Korean character set (since 2.9.4)
196 wxFONTENCODING_CP12_MAX
,
198 wxFONTENCODING_UTF7
, //!< UTF-7 Unicode encoding
199 wxFONTENCODING_UTF8
, //!< UTF-8 Unicode encoding
200 wxFONTENCODING_EUC_JP
, //!< Extended Unix Codepage for Japanese
201 wxFONTENCODING_UTF16BE
, //!< UTF-16 Big Endian Unicode encoding
202 wxFONTENCODING_UTF16LE
, //!< UTF-16 Little Endian Unicode encoding
203 wxFONTENCODING_UTF32BE
, //!< UTF-32 Big Endian Unicode encoding
204 wxFONTENCODING_UTF32LE
, // UTF-32 Little Endian Unicode encoding
206 wxFONTENCODING_MACROMAN
, //!< the standard mac encodings
207 wxFONTENCODING_MACJAPANESE
,
208 wxFONTENCODING_MACCHINESETRAD
,
209 wxFONTENCODING_MACKOREAN
,
210 wxFONTENCODING_MACARABIC
,
211 wxFONTENCODING_MACHEBREW
,
212 wxFONTENCODING_MACGREEK
,
213 wxFONTENCODING_MACCYRILLIC
,
214 wxFONTENCODING_MACDEVANAGARI
,
215 wxFONTENCODING_MACGURMUKHI
,
216 wxFONTENCODING_MACGUJARATI
,
217 wxFONTENCODING_MACORIYA
,
218 wxFONTENCODING_MACBENGALI
,
219 wxFONTENCODING_MACTAMIL
,
220 wxFONTENCODING_MACTELUGU
,
221 wxFONTENCODING_MACKANNADA
,
222 wxFONTENCODING_MACMALAJALAM
,
223 wxFONTENCODING_MACSINHALESE
,
224 wxFONTENCODING_MACBURMESE
,
225 wxFONTENCODING_MACKHMER
,
226 wxFONTENCODING_MACTHAI
,
227 wxFONTENCODING_MACLAOTIAN
,
228 wxFONTENCODING_MACGEORGIAN
,
229 wxFONTENCODING_MACARMENIAN
,
230 wxFONTENCODING_MACCHINESESIMP
,
231 wxFONTENCODING_MACTIBETAN
,
232 wxFONTENCODING_MACMONGOLIAN
,
233 wxFONTENCODING_MACETHIOPIC
,
234 wxFONTENCODING_MACCENTRALEUR
,
235 wxFONTENCODING_MACVIATNAMESE
,
236 wxFONTENCODING_MACARABICEXT
,
237 wxFONTENCODING_MACSYMBOL
,
238 wxFONTENCODING_MACDINGBATS
,
239 wxFONTENCODING_MACTURKISH
,
240 wxFONTENCODING_MACCROATIAN
,
241 wxFONTENCODING_MACICELANDIC
,
242 wxFONTENCODING_MACROMANIAN
,
243 wxFONTENCODING_MACCELTIC
,
244 wxFONTENCODING_MACGAELIC
,
245 wxFONTENCODING_MACKEYBOARD
,
247 // more CJK encodings (for historical reasons some are already declared
249 wxFONTENCODING_ISO2022_JP
, //!< ISO-2022-JP JIS encoding
251 wxFONTENCODING_MAX
, //!< highest enumerated encoding value
253 wxFONTENCODING_MACMIN
= wxFONTENCODING_MACROMAN
,
254 wxFONTENCODING_MACMAX
= wxFONTENCODING_MACKEYBOARD
,
256 // aliases for endian-dependent UTF encodings
257 wxFONTENCODING_UTF16
, //!< native UTF-16
258 wxFONTENCODING_UTF32
, //!< native UTF-32
260 /// Alias for the native Unicode encoding on this platform
261 /// (this is used by wxEncodingConverter and wxUTFFile only for now)
262 wxFONTENCODING_UNICODE
,
264 wxFONTENCODING_GB2312
= wxFONTENCODING_CP936
, //!< Simplified Chinese
265 wxFONTENCODING_BIG5
= wxFONTENCODING_CP950
, //!< Traditional Chinese
266 wxFONTENCODING_SHIFT_JIS
= wxFONTENCODING_CP932
, //!< Shift JIS
267 wxFONTENCODING_EUC_KR
= wxFONTENCODING_CP949
, //!< Korean
268 wxFONTENCODING_JOHAB
= wxFONTENCODING_CP1361
, //!< Korean Johab (since 2.9.4)
269 wxFONTENCODING_VIETNAMESE
= wxFONTENCODING_CP1258
//!< Vietnamese (since 2.9.4)
276 This class is a helper used for wxFont creation using named parameter
277 idiom: it allows to specify various wxFont attributes using the chained
278 calls to its clearly named methods instead of passing them in the fixed
279 order to wxFont constructors.
281 For example, to create an italic font with the given face name and size you
284 wxFont font(wxFontInfo(12).FaceName("Helvetica").Italic());
287 Notice that all of the methods of this object return a reference to the
288 object itself, allowing the calls to them to be chained as in the example
291 All methods taking boolean parameters can be used to turn the specified
292 font attribute on or off and turn it on by default.
300 Default constructor uses the default font size for the current
306 Constructor setting the font size in points to use.
308 @see wxFont::SetPointSize()
310 explicit wxFontInfo(int pointSize
);
313 Constructor setting the font size in pixels to use.
315 @see wxFont::SetPixelSize()
317 explicit wxFontInfo(const wxSize
& pixelSize
);
322 The family is a generic portable way of referring to fonts without
323 specifying a precise face name. This parameter must be one of the
324 ::wxFontFamily enumeration values.
326 If the FaceName() is used, then it overrides the font family.
328 @see wxFont::SetFamily()
330 wxFontInfo
& Family(wxFontFamily family
);
333 Set the font face name to use.
335 Face names are not portable, so prefer to use Family() in portable
338 @see wxFont::SetFaceName()
340 wxFontInfo
& FaceName(const wxString
& faceName
);
343 Use a bold version of the font.
345 @see ::wxFontWeight, wxFont::SetWeight()
347 wxFontInfo
& Bold(bool bold
= true);
350 Use a lighter version of the font.
352 @see ::wxFontWeight, wxFont::SetWeight()
354 wxFontInfo
& Light(bool light
= true);
357 Use an italic version of the font.
359 @see ::wxFontStyle, wxFont::SetStyle()
361 wxFontInfo
& Italic(bool italic
= true);
364 Use a slanted version of the font.
366 @see ::wxFontStyle, wxFont::SetStyle()
368 wxFontInfo
& Slant(bool slant
= true);
371 Set anti-aliasing flag.
373 Force the use of anti-aliasing on or off.
375 Currently this is not implemented, i.e. using this method doesn't do
378 wxFontInfo
& AntiAliased(bool antiAliased
= true);
381 Use an underlined version of the font.
383 wxFontInfo
& Underlined(bool underlined
= true);
386 Use a strike-through version of the font.
388 Currently this is only implemented in wxMSW and wxGTK.
390 wxFontInfo
& Strikethrough(bool strikethrough
= true);
393 Set the font encoding to use.
395 This is mostly unneeded in Unicode builds of wxWidgets.
397 @see ::wxFontEncoding, wxFont::SetEncoding()
399 wxFontInfo
& Encoding(wxFontEncoding encoding
);
402 Set all the font attributes at once.
404 See ::wxFontFlag for the various flags that can be used.
406 wxFontInfo
& AllFlags(int flags
);
412 A font is an object which determines the appearance of text.
414 Fonts are used for drawing text to a device context, and setting the appearance
415 of a window's text, see wxDC::SetFont() and wxWindow::SetFont().
417 The easiest way to create a custom font is to use wxFontInfo object to
418 specify the font attributes and then use wxFont::wxFont(const wxFontInfo&)
419 constructor. Alternatively, you could start with one of the pre-defined
420 fonts or use wxWindow::GetFont() and modify the font, e.g. by increasing
421 its size using MakeLarger() or changing its weight using MakeBold().
423 This class uses @ref overview_refcount "reference counting and copy-on-write"
424 internally so that assignments between two instances of this class are very
425 cheap. You can therefore use actual objects instead of pointers without
426 efficiency problems. If an instance of this class is changed it will create
427 its own data internally so that other instances, which previously shared the
428 data using the reference counting, are not affected.
430 You can retrieve the current system font settings with wxSystemSettings.
436 ::wxNullFont, ::wxNORMAL_FONT, ::wxSMALL_FONT, ::wxITALIC_FONT, ::wxSWISS_FONT
438 @see @ref overview_font, wxDC::SetFont, wxDC::DrawText,
439 wxDC::GetTextExtent, wxFontDialog, wxSystemSettings
441 class wxFont
: public wxGDIObject
450 Copy constructor, uses @ref overview_refcount "reference counting".
452 wxFont(const wxFont
& font
);
455 Creates a font object using the specified font description.
457 This is the preferred way to create font objects as using this ctor
458 results in more readable code and it is also extensible, e.g. it could
459 continue to be used if support for more font attributes is added in the
460 future. For example, this constructor provides the only way of creating
461 fonts with strike-through style.
463 Example of creating a font using this ctor:
465 wxFont font(wxFontInfo(10).Bold().Underlined());
470 wxFont(const wxFontInfo
& font
);
473 Creates a font object with the specified attributes and size in points.
475 Notice that the use of this constructor is often more verbose and less
476 readable than the use of constructor from wxFontInfo, e.g. the example
477 in that constructor documentation would need to be written as
479 wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
480 wxFONTWEIGHT_BOLD, true);
482 which is longer and less clear.
485 Size in points. See SetPointSize() for more info.
487 The font family: a generic portable way of referring to fonts without specifying a
488 facename. This parameter must be one of the ::wxFontFamily enumeration values.
489 If the @a faceName argument is provided, then it overrides the font family.
491 One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
493 Font weight, sometimes also referred to as font boldness.
494 One of the ::wxFontWeight enumeration values.
496 The value can be @true or @false.
497 At present this has an effect on Windows and Motif 2.x only.
499 An optional string specifying the face name to be used.
500 If it is an empty string, a default face name will be chosen based on the family.
502 An encoding which may be one of the enumeration values of ::wxFontEncoding.
503 Briefly these can be summed up as:
505 <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
506 <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
507 Default application encoding: this is the encoding set by calls to
508 SetDefaultEncoding() and which may be set to, say, KOI8 to create all
509 fonts by default with KOI8 encoding. Initially, the default application
510 encoding is the same as default system encoding.</TD></TR>
511 <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
512 <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
513 <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
515 If the specified encoding isn't available, no font is created
516 (see also @ref overview_fontencoding).
518 @remarks If the desired font does not exist, the closest match will be
519 chosen. Under Windows, only scalable TrueType fonts are used.
521 wxFont(int pointSize
, wxFontFamily family
, wxFontStyle style
,
523 bool underline
= false,
524 const wxString
& faceName
= wxEmptyString
,
525 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
528 Creates a font object with the specified attributes and size in pixels.
530 Notice that the use of this constructor is often more verbose and less
531 readable than the use of constructor from wxFontInfo, consider using
532 that constructor instead.
535 Size in pixels. See SetPixelSize() for more info.
537 The font family: a generic portable way of referring to fonts without specifying a
538 facename. This parameter must be one of the ::wxFontFamily enumeration values.
539 If the @a faceName argument is provided, then it overrides the font family.
541 One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
543 Font weight, sometimes also referred to as font boldness.
544 One of the ::wxFontWeight enumeration values.
546 The value can be @true or @false.
547 At present this has an effect on Windows and Motif 2.x only.
549 An optional string specifying the face name to be used.
550 If it is an empty string, a default face name will be chosen based on the family.
552 An encoding which may be one of the enumeration values of ::wxFontEncoding.
553 Briefly these can be summed up as:
555 <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
556 <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
557 Default application encoding: this is the encoding set by calls to
558 SetDefaultEncoding() and which may be set to, say, KOI8 to create all
559 fonts by default with KOI8 encoding. Initially, the default application
560 encoding is the same as default system encoding.</TD></TR>
561 <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
562 <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
563 <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
565 If the specified encoding isn't available, no font is created
566 (see also @ref overview_fontencoding).
568 @remarks If the desired font does not exist, the closest match will be
569 chosen. Under Windows, only scalable TrueType fonts are used.
571 wxFont(const wxSize
& pixelSize
, wxFontFamily family
,
572 wxFontStyle style
, wxFontWeight weight
,
573 bool underline
= false,
574 const wxString
& faceName
= wxEmptyString
,
575 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
578 Constructor from font description string.
580 This constructor uses SetNativeFontInfo() to initialize the font.
581 If @a fontdesc is invalid the font remains uninitialized, i.e. its IsOk() method
584 wxFont(const wxString
& nativeInfoString
);
587 Construct font from a native font info structure.
589 wxFont(const wxNativeFontInfo
& nativeInfo
);
594 See @ref overview_refcount_destruct "reference-counted object destruction"
597 @remarks Although all remaining fonts are deleted when the application
598 exits, the application should try to clean up all fonts
599 itself. This is because wxWidgets cannot know if a
600 pointer to the font object is stored in an application
601 data structure, and there is a risk of double deletion.
612 Returns the encoding of this font.
614 Note that under wxGTK the returned value is always @c wxFONTENCODING_UTF8.
618 virtual wxFontEncoding
GetEncoding() const;
621 Returns the face name associated with the font, or the empty string if
622 there is no face information.
626 virtual wxString
GetFaceName() const;
629 Gets the font family if possible.
631 As described in ::wxFontFamily docs the returned value acts as a rough,
632 basic classification of the main font properties (look, spacing).
634 If the current font face name is not recognized by wxFont or by the
635 underlying system, @c wxFONTFAMILY_DEFAULT is returned.
637 Note that currently this function is not very precise and so not
638 particularly useful. Font families mostly make sense only for font
639 creation, see SetFamily().
643 virtual wxFontFamily
GetFamily() const;
646 Returns the platform-dependent string completely describing this font.
648 Returned string is always non-empty unless the font is invalid (in
649 which case an assert is triggered).
651 Note that the returned string is not meant to be shown or edited by the user: a
652 typical use of this function is for serializing in string-form a wxFont object.
654 @see SetNativeFontInfo(), GetNativeFontInfoUserDesc()
656 wxString
GetNativeFontInfoDesc() const;
659 Returns a user-friendly string for this font object.
661 Returned string is always non-empty unless the font is invalid (in
662 which case an assert is triggered).
664 The string does not encode all wxFont infos under all platforms;
665 e.g. under wxMSW the font family is not present in the returned string.
667 Some examples of the formats of returned strings (which are platform-dependent)
668 are in SetNativeFontInfoUserDesc().
670 @see SetNativeFontInfoUserDesc(), GetNativeFontInfoDesc()
672 wxString
GetNativeFontInfoUserDesc() const;
674 const wxNativeFontInfo
*GetNativeFontInfo() const;
681 virtual int GetPointSize() const;
686 Note that under wxMSW if you passed to SetPixelSize() (or to the ctor)
687 a wxSize object with a null width value, you'll get a null width in
692 virtual wxSize
GetPixelSize() const;
695 Gets the font style. See ::wxFontStyle for a list of valid styles.
699 virtual wxFontStyle
GetStyle() const;
702 Returns @true if the font is underlined, @false otherwise.
706 virtual bool GetUnderlined() const;
709 Returns @true if the font is stricken-through, @false otherwise.
711 @see SetStrikethrough()
715 virtual bool GetStrikethrough() const;
718 Gets the font weight. See ::wxFontWeight for a list of valid weight identifiers.
722 virtual wxFontWeight
GetWeight() const;
725 Returns @true if the font is a fixed width (or monospaced) font,
726 @false if it is a proportional one or font is invalid.
728 Note that this function under some platforms is different than just testing
729 for the font family being equal to @c wxFONTFAMILY_TELETYPE because native
730 platform-specific functions are used for the check (resulting in a more
731 accurate return value).
733 virtual bool IsFixedWidth() const;
736 Returns @true if this object is a valid font, @false otherwise.
738 virtual bool IsOk() const;
744 @name Similar fonts creation
746 The functions in this section either modify the font in place or create
747 a new font similar to the given one but with its weight, style or size
753 Returns a bold version of this font.
762 Returns an italic version of this font.
768 wxFont
Italic() const;
771 Returns a larger version of this font.
773 The font size is multiplied by @c 1.2, the factor of @c 1.2 being
774 inspired by the W3C CSS specification.
776 @see MakeLarger(), Smaller(), Scaled()
780 wxFont
Larger() const;
783 Returns a smaller version of this font.
785 The font size is divided by @c 1.2, the factor of @c 1.2 being
786 inspired by the W3C CSS specification.
788 @see MakeSmaller(), Larger(), Scaled()
792 wxFont
Smaller() const;
795 Returns underlined version of this font.
797 @see MakeUnderlined()
801 wxFont
Underlined() const;
804 Returns stricken-through version of this font.
806 Currently stricken-through fonts are only supported in wxMSW and wxGTK.
808 @see MakeStrikethrough()
812 wxFont
Strikethrough() const;
815 Changes this font to be bold.
824 Changes this font to be italic.
830 wxFont
& MakeItalic();
833 Changes this font to be larger.
835 The font size is multiplied by @c 1.2, the factor of @c 1.2 being
836 inspired by the W3C CSS specification.
838 @see Larger(), MakeSmaller(), Scale()
842 wxFont
& MakeLarger();
845 Changes this font to be smaller.
847 The font size is divided by @c 1.2, the factor of @c 1.2 being
848 inspired by the W3C CSS specification.
850 @see Smaller(), MakeLarger(), Scale()
854 wxFont
& MakeSmaller();
857 Changes this font to be underlined.
863 wxFont
& MakeUnderlined();
866 Changes this font to be stricken-through.
868 Currently stricken-through fonts are only supported in wxMSW and wxGTK.
874 wxFont
& MakeStrikethrough();
877 Changes the size of this font.
879 The font size is multiplied by the given factor (which may be less than
880 1 to create a smaller version of the font).
882 @see Scaled(), MakeLarger(), MakeSmaller()
886 wxFont
& Scale(float x
);
889 Returns a scaled version of this font.
891 The font size is multiplied by the given factor (which may be less than
892 1 to create a smaller version of the font).
894 @see Scale(), Larger(), Smaller()
898 wxFont
Scaled(float x
) const;
905 These functions internally recreate the native font object with the new
911 Sets the encoding for this font.
913 Note that under wxGTK this function has no effect (because the underlying
914 Pango library always uses @c wxFONTENCODING_UTF8).
918 virtual void SetEncoding(wxFontEncoding encoding
);
921 Sets the facename for the font.
924 A valid facename, which should be on the end-user's system.
926 @remarks To avoid portability problems, don't rely on a specific face,
927 but specify the font family instead (see ::wxFontFamily and SetFamily()).
929 @return @true if the given face name exists; if the face name doesn't exist
930 in the user's system then the font is invalidated (so that IsOk() will
931 return @false) and @false is returned.
933 @see GetFaceName(), SetFamily()
935 virtual bool SetFaceName(const wxString
& faceName
);
938 Sets the font family.
940 As described in ::wxFontFamily docs the given @a family value acts as a rough,
941 basic indication of the main font properties (look, spacing).
943 Note that changing the font family results in changing the font face name.
946 One of the ::wxFontFamily values.
948 @see GetFamily(), SetFaceName()
950 virtual void SetFamily(wxFontFamily family
);
953 Creates the font corresponding to the given native font description string
954 which must have been previously returned by GetNativeFontInfoDesc().
956 If the string is invalid, font is unchanged.
957 This function is typically used for de-serializing a wxFont object
958 previously saved in a string-form.
960 @return @true if the creation was successful.
962 @see SetNativeFontInfoUserDesc()
964 bool SetNativeFontInfo(const wxString
& info
);
967 Creates the font corresponding to the given native font description string and
968 returns @true if the creation was successful.
970 Unlike SetNativeFontInfo(), this function accepts strings which are user-friendly.
971 Examples of accepted string formats are:
974 @hdr3col{platform, generic syntax, example}
975 @row3col{wxGTK2, <tt>[underlined] [strikethrough] [FACE-NAME] [bold] [oblique|italic] [POINTSIZE]</tt>, Monospace bold 10}
976 @row3col{wxMSW, <tt>[light|bold] [italic] [FACE-NAME] [POINTSIZE] [ENCODING]</tt>, Tahoma 10 WINDOWS-1252}
979 @todo add an example for wxMac
981 For more detailed information about the allowed syntaxes you can look at the
982 documentation of the native API used for font-rendering
983 (e.g. @c pango_font_description_from_string under GTK, although notice
984 that it doesn't support the "underlined" and "strikethrough" attributes
985 and so those are handled by wxWidgets itself).
987 Note that unlike SetNativeFontInfo(), this function doesn't always restore all
988 attributes of the wxFont object under all platforms; e.g. on wxMSW the font family
989 is not restored (because GetNativeFontInfoUserDesc doesn't return it on wxMSW).
990 If you want to serialize/deserialize a font in string form, you should use
991 GetNativeFontInfoDesc() and SetNativeFontInfo() instead.
993 @see SetNativeFontInfo()
995 bool SetNativeFontInfoUserDesc(const wxString
& info
);
997 void SetNativeFontInfo(const wxNativeFontInfo
& info
);
1000 Sets the point size.
1002 The <em>point size</em> is defined as 1/72 of the Anglo-Saxon inch
1003 (25.4 mm): it is approximately 0.0139 inch or 352.8 um.
1010 virtual void SetPointSize(int pointSize
);
1013 Sets the pixel size.
1015 The height parameter of @a pixelSize must be positive while the width
1016 parameter may also be zero (to indicate that you're not interested in the
1017 width of the characters: a suitable width will be chosen for best rendering).
1019 This feature (specifying the font pixel size) is directly supported only
1020 under wxMSW and wxGTK currently; under other platforms a font with the
1021 closest size to the given one is found using binary search (this maybe slower).
1025 virtual void SetPixelSize(const wxSize
& pixelSize
);
1028 Sets the font style.
1031 One of the ::wxFontStyle enumeration values.
1035 virtual void SetStyle(wxFontStyle style
);
1038 Sets the font size using a predefined symbolic size name.
1040 This function allows to change font size to be (very) large or small
1041 compared to the standard font size.
1043 @see SetSymbolicSizeRelativeTo().
1047 void SetSymbolicSize(wxFontSymbolicSize size
);
1050 Sets the font size compared to the base font size.
1052 This is the same as SetSymbolicSize() except that it uses the given
1053 font size as the normal font size instead of the standard font size.
1057 void SetSymbolicSizeRelativeTo(wxFontSymbolicSize size
, int base
);
1063 @true to underline, @false otherwise.
1065 @see GetUnderlined()
1067 virtual void SetUnderlined(bool underlined
);
1070 Sets strike-through attribute of the font.
1072 Currently stricken-through fonts are only supported in wxMSW and wxGTK.
1074 @param strikethrough
1075 @true to add strike-through style, @false to remove it.
1077 @see GetStrikethrough()
1081 virtual void SetStrikethrough(bool strikethrough
);
1084 Sets the font weight.
1087 One of the ::wxFontWeight values.
1091 virtual void SetWeight(wxFontWeight weight
);
1097 Inequality operator.
1099 See @ref overview_refcount_equality "reference-counted object comparison" for
1102 bool operator!=(const wxFont
& font
) const;
1107 See @ref overview_refcount_equality "reference-counted object comparison" for
1110 bool operator==(const wxFont
& font
) const;
1113 Assignment operator, using @ref overview_refcount "reference counting".
1115 wxFont
& operator =(const wxFont
& font
);
1121 Returns the current application's default encoding.
1123 @see @ref overview_fontencoding, SetDefaultEncoding()
1125 static wxFontEncoding
GetDefaultEncoding();
1128 Sets the default font encoding.
1130 @see @ref overview_fontencoding, GetDefaultEncoding()
1132 static void SetDefaultEncoding(wxFontEncoding encoding
);
1136 This function takes the same parameters as the relative
1137 @ref wxFont::wxFont "wxFont constructor" and returns a new font
1138 object allocated on the heap.
1140 Their use is discouraged, use wxFont constructor from wxFontInfo
1143 static wxFont
* New(int pointSize
, wxFontFamily family
, wxFontStyle style
,
1144 wxFontWeight weight
,
1145 bool underline
= false,
1146 const wxString
& faceName
= wxEmptyString
,
1147 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1148 static wxFont
* New(int pointSize
, wxFontFamily family
,
1149 int flags
= wxFONTFLAG_DEFAULT
,
1150 const wxString
& faceName
= wxEmptyString
,
1151 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1152 static wxFont
* New(const wxSize
& pixelSize
,
1153 wxFontFamily family
,
1155 wxFontWeight weight
,
1156 bool underline
= false,
1157 const wxString
& faceName
= wxEmptyString
,
1158 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1159 static wxFont
* New(const wxSize
& pixelSize
,
1160 wxFontFamily family
,
1161 int flags
= wxFONTFLAG_DEFAULT
,
1162 const wxString
& faceName
= wxEmptyString
,
1163 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1166 static wxFont
*New(const wxNativeFontInfo
& nativeInfo
);
1167 static wxFont
*New(const wxString
& nativeInfoString
);
1179 Equivalent to wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).
1181 @see wxSystemSettings
1183 wxFont
* wxNORMAL_FONT
;
1186 A font using the @c wxFONTFAMILY_SWISS family and 2 points smaller than
1189 wxFont
* wxSMALL_FONT
;
1192 A font using the @c wxFONTFAMILY_ROMAN family and @c wxFONTSTYLE_ITALIC style and
1193 of the same size of ::wxNORMAL_FONT.
1195 wxFont
* wxITALIC_FONT
;
1198 A font identic to ::wxNORMAL_FONT except for the family used which is
1199 @c wxFONTFAMILY_SWISS.
1201 wxFont
* wxSWISS_FONT
;
1207 A font list is a list containing all fonts which have been created.
1208 There is only one instance of this class: ::wxTheFontList.
1210 Use this object to search for a previously created font of the desired type
1211 and create it if not already found.
1213 In some windowing systems, the font may be a scarce resource, so it is best to
1214 reuse old resources if possible. When an application finishes, all fonts will
1215 be deleted and their resources freed, eliminating the possibility of 'memory
1227 Constructor. The application should not construct its own font list:
1228 use the object pointer ::wxTheFontList.
1233 Finds a font of the given specification, or creates one and adds it to the
1234 list. See the @ref wxFont "wxFont constructor" for details of the arguments.
1236 wxFont
* FindOrCreateFont(int point_size
, wxFontFamily family
, wxFontStyle style
,
1237 wxFontWeight weight
, bool underline
= false,
1238 const wxString
& facename
= wxEmptyString
,
1239 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1244 The global wxFontList instance.
1246 wxFontList
* wxTheFontList
;
1249 // ============================================================================
1250 // Global functions/macros
1251 // ============================================================================
1253 /** @addtogroup group_funcmacro_misc */
1257 Converts string to a wxFont best represented by the given string. Returns
1260 @see wxToString(const wxFont&)
1264 bool wxFromString(const wxString
& string
, wxFont
* font
);
1267 Converts the given wxFont into a string.
1269 @see wxFromString(const wxString&, wxFont*)
1273 wxString
wxToString(const wxFont
& font
);