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/strikethrough flags (default: no lines)
116 wxFONTFLAG_UNDERLINED
= 1 << 6,
117 wxFONTFLAG_STRIKETHROUGH
= 1 << 7,
119 /// the mask of all currently used flags
120 wxFONTFLAG_MASK
= wxFONTFLAG_ITALIC
|
124 wxFONTFLAG_ANTIALIASED
|
125 wxFONTFLAG_NOT_ANTIALIASED
|
126 wxFONTFLAG_UNDERLINED
|
127 wxFONTFLAG_STRIKETHROUGH
135 See wxFont::SetEncoding().
139 /// Default system encoding.
140 wxFONTENCODING_SYSTEM
= -1, // system default
142 /// Default application encoding.
143 wxFONTENCODING_DEFAULT
, // current default encoding
145 // ISO8859 standard defines a number of single-byte charsets
146 wxFONTENCODING_ISO8859_1
, //!< West European (Latin1)
147 wxFONTENCODING_ISO8859_2
, //!< Central and East European (Latin2)
148 wxFONTENCODING_ISO8859_3
, //!< Esperanto (Latin3)
149 wxFONTENCODING_ISO8859_4
, //!< Baltic (old) (Latin4)
150 wxFONTENCODING_ISO8859_5
, //!< Cyrillic
151 wxFONTENCODING_ISO8859_6
, //!< Arabic
152 wxFONTENCODING_ISO8859_7
, //!< Greek
153 wxFONTENCODING_ISO8859_8
, //!< Hebrew
154 wxFONTENCODING_ISO8859_9
, //!< Turkish (Latin5)
155 wxFONTENCODING_ISO8859_10
, //!< Variation of Latin4 (Latin6)
156 wxFONTENCODING_ISO8859_11
, //!< Thai
157 wxFONTENCODING_ISO8859_12
, //!< doesn't exist currently, but put it
158 //!< here anyhow to make all ISO8859
159 //!< consecutive numbers
160 wxFONTENCODING_ISO8859_13
, //!< Baltic (Latin7)
161 wxFONTENCODING_ISO8859_14
, //!< Latin8
162 wxFONTENCODING_ISO8859_15
, //!< Latin9 (a.k.a. Latin0, includes euro)
163 wxFONTENCODING_ISO8859_MAX
,
165 // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
166 wxFONTENCODING_KOI8
, //!< KOI8 Russian
167 wxFONTENCODING_KOI8_U
, //!< KOI8 Ukrainian
168 wxFONTENCODING_ALTERNATIVE
, //!< same as MS-DOS CP866
169 wxFONTENCODING_BULGARIAN
, //!< used under Linux in Bulgaria
171 // what would we do without Microsoft? They have their own encodings
173 wxFONTENCODING_CP437
, //!< original MS-DOS codepage
174 wxFONTENCODING_CP850
, //!< CP437 merged with Latin1
175 wxFONTENCODING_CP852
, //!< CP437 merged with Latin2
176 wxFONTENCODING_CP855
, //!< another cyrillic encoding
177 wxFONTENCODING_CP866
, //!< and another one
179 wxFONTENCODING_CP874
, //!< WinThai
180 wxFONTENCODING_CP932
, //!< Japanese (shift-JIS)
181 wxFONTENCODING_CP936
, //!< Chinese simplified (GB)
182 wxFONTENCODING_CP949
, //!< Korean (Hangul charset)
183 wxFONTENCODING_CP950
, //!< Chinese (traditional - Big5)
184 wxFONTENCODING_CP1250
, //!< WinLatin2
185 wxFONTENCODING_CP1251
, //!< WinCyrillic
186 wxFONTENCODING_CP1252
, //!< WinLatin1
187 wxFONTENCODING_CP1253
, //!< WinGreek (8859-7)
188 wxFONTENCODING_CP1254
, //!< WinTurkish
189 wxFONTENCODING_CP1255
, //!< WinHebrew
190 wxFONTENCODING_CP1256
, //!< WinArabic
191 wxFONTENCODING_CP1257
, //!< WinBaltic (same as Latin 7)
192 wxFONTENCODING_CP12_MAX
,
194 wxFONTENCODING_UTF7
, //!< UTF-7 Unicode encoding
195 wxFONTENCODING_UTF8
, //!< UTF-8 Unicode encoding
196 wxFONTENCODING_EUC_JP
, //!< Extended Unix Codepage for Japanese
197 wxFONTENCODING_UTF16BE
, //!< UTF-16 Big Endian Unicode encoding
198 wxFONTENCODING_UTF16LE
, //!< UTF-16 Little Endian Unicode encoding
199 wxFONTENCODING_UTF32BE
, //!< UTF-32 Big Endian Unicode encoding
200 wxFONTENCODING_UTF32LE
, // UTF-32 Little Endian Unicode encoding
202 wxFONTENCODING_MACROMAN
, //!< the standard mac encodings
203 wxFONTENCODING_MACJAPANESE
,
204 wxFONTENCODING_MACCHINESETRAD
,
205 wxFONTENCODING_MACKOREAN
,
206 wxFONTENCODING_MACARABIC
,
207 wxFONTENCODING_MACHEBREW
,
208 wxFONTENCODING_MACGREEK
,
209 wxFONTENCODING_MACCYRILLIC
,
210 wxFONTENCODING_MACDEVANAGARI
,
211 wxFONTENCODING_MACGURMUKHI
,
212 wxFONTENCODING_MACGUJARATI
,
213 wxFONTENCODING_MACORIYA
,
214 wxFONTENCODING_MACBENGALI
,
215 wxFONTENCODING_MACTAMIL
,
216 wxFONTENCODING_MACTELUGU
,
217 wxFONTENCODING_MACKANNADA
,
218 wxFONTENCODING_MACMALAJALAM
,
219 wxFONTENCODING_MACSINHALESE
,
220 wxFONTENCODING_MACBURMESE
,
221 wxFONTENCODING_MACKHMER
,
222 wxFONTENCODING_MACTHAI
,
223 wxFONTENCODING_MACLAOTIAN
,
224 wxFONTENCODING_MACGEORGIAN
,
225 wxFONTENCODING_MACARMENIAN
,
226 wxFONTENCODING_MACCHINESESIMP
,
227 wxFONTENCODING_MACTIBETAN
,
228 wxFONTENCODING_MACMONGOLIAN
,
229 wxFONTENCODING_MACETHIOPIC
,
230 wxFONTENCODING_MACCENTRALEUR
,
231 wxFONTENCODING_MACVIATNAMESE
,
232 wxFONTENCODING_MACARABICEXT
,
233 wxFONTENCODING_MACSYMBOL
,
234 wxFONTENCODING_MACDINGBATS
,
235 wxFONTENCODING_MACTURKISH
,
236 wxFONTENCODING_MACCROATIAN
,
237 wxFONTENCODING_MACICELANDIC
,
238 wxFONTENCODING_MACROMANIAN
,
239 wxFONTENCODING_MACCELTIC
,
240 wxFONTENCODING_MACGAELIC
,
241 wxFONTENCODING_MACKEYBOARD
,
243 // more CJK encodings (for historical reasons some are already declared
245 wxFONTENCODING_ISO2022_JP
, //!< ISO-2022-JP JIS encoding
247 wxFONTENCODING_MAX
, //!< highest enumerated encoding value
249 wxFONTENCODING_MACMIN
= wxFONTENCODING_MACROMAN
,
250 wxFONTENCODING_MACMAX
= wxFONTENCODING_MACKEYBOARD
,
252 // aliases for endian-dependent UTF encodings
253 wxFONTENCODING_UTF16
, //!< native UTF-16
254 wxFONTENCODING_UTF32
, //!< native UTF-32
256 /// Alias for the native Unicode encoding on this platform
257 /// (this is used by wxEncodingConverter and wxUTFFile only for now)
258 wxFONTENCODING_UNICODE
,
260 wxFONTENCODING_GB2312
= wxFONTENCODING_CP936
, //!< Simplified Chinese
261 wxFONTENCODING_BIG5
= wxFONTENCODING_CP950
, //!< Traditional Chinese
262 wxFONTENCODING_SHIFT_JIS
= wxFONTENCODING_CP932
, //!< Shift JIS
263 wxFONTENCODING_EUC_KR
= wxFONTENCODING_CP949
//!< Korean
271 A font is an object which determines the appearance of text.
272 Fonts are used for drawing text to a device context, and setting the appearance
275 This class uses @ref overview_refcount "reference counting and copy-on-write"
276 internally so that assignments between two instances of this class are very
277 cheap. You can therefore use actual objects instead of pointers without
278 efficiency problems. If an instance of this class is changed it will create
279 its own data internally so that other instances, which previously shared the
280 data using the reference counting, are not affected.
282 You can retrieve the current system font settings with wxSystemSettings.
288 ::wxNullFont, ::wxNORMAL_FONT, ::wxSMALL_FONT, ::wxITALIC_FONT, ::wxSWISS_FONT
290 @see @ref overview_font, wxDC::SetFont, wxDC::DrawText,
291 wxDC::GetTextExtent, wxFontDialog, wxSystemSettings
293 class wxFont
: public wxGDIObject
302 Copy constructor, uses @ref overview_refcount "reference counting".
304 wxFont(const wxFont
& font
);
307 Creates a font object with the specified attributes.
310 Size in points. See SetPointSize() for more info.
312 The font family: a generic portable way of referring to fonts without specifying a
313 facename. This parameter must be one of the ::wxFontFamily enumeration values.
314 If the @a faceName argument is provided, then it overrides the font family.
316 One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
318 Font weight, sometimes also referred to as font boldness.
319 One of the ::wxFontWeight enumeration values.
321 The value can be @true or @false.
322 At present this has an effect on Windows and Motif 2.x only.
324 An optional string specifying the face name to be used.
325 If it is an empty string, a default face name will be chosen based on the family.
327 An encoding which may be one of the enumeration values of ::wxFontEncoding.
328 Briefly these can be summed up as:
330 <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
331 <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
332 Default application encoding: this is the encoding set by calls to
333 SetDefaultEncoding() and which may be set to, say, KOI8 to create all
334 fonts by default with KOI8 encoding. Initially, the default application
335 encoding is the same as default system encoding.</TD></TR>
336 <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
337 <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
338 <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
340 If the specified encoding isn't available, no font is created
341 (see also @ref overview_fontencoding).
343 @remarks If the desired font does not exist, the closest match will be
344 chosen. Under Windows, only scalable TrueType fonts are used.
346 wxFont(int pointSize
, wxFontFamily family
, wxFontStyle style
,
348 bool underline
= false,
349 const wxString
& faceName
= wxEmptyString
,
350 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
353 Creates a font object with the specified attributes.
356 Size in pixels. See SetPixelSize() for more info.
358 The font family: a generic portable way of referring to fonts without specifying a
359 facename. This parameter must be one of the ::wxFontFamily enumeration values.
360 If the @a faceName argument is provided, then it overrides the font family.
362 One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
364 Font weight, sometimes also referred to as font boldness.
365 One of the ::wxFontWeight enumeration values.
367 The value can be @true or @false.
368 At present this has an effect on Windows and Motif 2.x only.
370 An optional string specifying the face name to be used.
371 If it is an empty string, a default face name will be chosen based on the family.
373 An encoding which may be one of the enumeration values of ::wxFontEncoding.
374 Briefly these can be summed up as:
376 <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
377 <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
378 Default application encoding: this is the encoding set by calls to
379 SetDefaultEncoding() and which may be set to, say, KOI8 to create all
380 fonts by default with KOI8 encoding. Initially, the default application
381 encoding is the same as default system encoding.</TD></TR>
382 <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
383 <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
384 <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
386 If the specified encoding isn't available, no font is created
387 (see also @ref overview_fontencoding).
389 @remarks If the desired font does not exist, the closest match will be
390 chosen. Under Windows, only scalable TrueType fonts are used.
392 wxFont(const wxSize
& pixelSize
, wxFontFamily family
,
393 wxFontStyle style
, wxFontWeight weight
,
394 bool underline
= false,
395 const wxString
& faceName
= wxEmptyString
,
396 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
399 Constructor from font description string.
401 This constructor uses SetNativeFontInfo() to initialize the font.
402 If @a fontdesc is invalid the font remains uninitialized, i.e. its IsOk() method
405 wxFont(const wxString
& fontdesc
);
410 See @ref overview_refcount_destruct "reference-counted object destruction"
413 @remarks Although all remaining fonts are deleted when the application
414 exits, the application should try to clean up all fonts
415 itself. This is because wxWidgets cannot know if a
416 pointer to the font object is stored in an application
417 data structure, and there is a risk of double deletion.
428 Returns the encoding of this font.
430 Note that under wxGTK the returned value is always @c wxFONTENCODING_UTF8.
434 virtual wxFontEncoding
GetEncoding() const;
437 Returns the face name associated with the font, or the empty string if
438 there is no face information.
442 virtual wxString
GetFaceName() const;
445 Gets the font family if possible.
447 As described in ::wxFontFamily docs the returned value acts as a rough,
448 basic classification of the main font properties (look, spacing).
450 If the current font face name is not recognized by wxFont or by the
451 underlying system, @c wxFONTFAMILY_DEFAULT is returned.
453 Note that currently this function is not very precise and so not
454 particularly useful. Font families mostly make sense only for font
455 creation, see SetFamily().
459 virtual wxFontFamily
GetFamily() const;
462 Returns the platform-dependent string completely describing this font.
464 Returned string is always non-empty unless the font is invalid (in
465 which case an assert is triggered).
467 Note that the returned string is not meant to be shown or edited by the user: a
468 typical use of this function is for serializing in string-form a wxFont object.
470 @see SetNativeFontInfo(), GetNativeFontInfoUserDesc()
472 wxString
GetNativeFontInfoDesc() const;
475 Returns a user-friendly string for this font object.
477 Returned string is always non-empty unless the font is invalid (in
478 which case an assert is triggered).
480 The string does not encode all wxFont infos under all platforms;
481 e.g. under wxMSW the font family is not present in the returned string.
483 Some examples of the formats of returned strings (which are platform-dependent)
484 are in SetNativeFontInfoUserDesc().
486 @see SetNativeFontInfoUserDesc(), GetNativeFontInfoDesc()
488 wxString
GetNativeFontInfoUserDesc() const;
495 virtual int GetPointSize() const;
500 Note that under wxMSW if you passed to SetPixelSize() (or to the ctor)
501 a wxSize object with a null width value, you'll get a null width in
506 virtual wxSize
GetPixelSize() const;
509 Gets the font style. See ::wxFontStyle for a list of valid styles.
513 virtual wxFontStyle
GetStyle() const;
516 Returns @true if the font is underlined, @false otherwise.
520 virtual bool GetUnderlined() const;
523 Gets the font weight. See ::wxFontWeight for a list of valid weight identifiers.
527 virtual wxFontWeight
GetWeight() const;
530 Returns @true if the font is a fixed width (or monospaced) font,
531 @false if it is a proportional one or font is invalid.
533 Note that this function under some platforms is different than just testing
534 for the font family being equal to @c wxFONTFAMILY_TELETYPE because native
535 platform-specific functions are used for the check (resulting in a more
536 accurate return value).
538 virtual bool IsFixedWidth() const;
541 Returns @true if this object is a valid font, @false otherwise.
543 virtual bool IsOk() const;
549 @name Similar fonts creation
551 The functions in this section either modify the font in place or create
552 a new font similar to the given one but with its weight, style or size
558 Returns a bold version of this font.
567 Returns an italic version of this font.
573 wxFont
Italic() const;
576 Returns a larger version of this font.
578 The font size is multiplied by @c 1.2, the factor of @c 1.2 being
579 inspired by the W3C CSS specification.
581 @see MakeLarger(), Smaller(), Scaled()
585 wxFont
Larger() const;
588 Returns a smaller version of this font.
590 The font size is divided by @c 1.2, the factor of @c 1.2 being
591 inspired by the W3C CSS specification.
593 @see MakeSmaller(), Larger(), Scaled()
597 wxFont
Smaller() const;
600 Returns underlined version of this font.
602 @see MakeUnderlined()
606 wxFont
Underlined() const;
609 Changes this font to be bold.
618 Changes this font to be italic.
624 wxFont
& MakeItalic();
627 Changes this font to be larger.
629 The font size is multiplied by @c 1.2, the factor of @c 1.2 being
630 inspired by the W3C CSS specification.
632 @see Larger(), MakeSmaller(), Scale()
636 wxFont
& MakeLarger();
639 Changes this font to be smaller.
641 The font size is divided by @c 1.2, the factor of @c 1.2 being
642 inspired by the W3C CSS specification.
644 @see Smaller(), MakeLarger(), Scale()
648 wxFont
& MakeSmaller();
651 Changes this font to be underlined.
657 wxFont
& MakeUnderlined();
660 Changes the size of this font.
662 The font size is multiplied by the given factor (which may be less than
663 1 to create a smaller version of the font).
665 @see Scaled(), MakeLarger(), MakeSmaller()
669 wxFont
& Scale(float x
);
672 Returns a scaled version of this font.
674 The font size is multiplied by the given factor (which may be less than
675 1 to create a smaller version of the font).
677 @see Scale(), Larger(), Smaller()
681 wxFont
Scaled(float x
) const;
688 These functions internally recreate the native font object with the new
694 Sets the encoding for this font.
696 Note that under wxGTK this function has no effect (because the underlying
697 Pango library always uses @c wxFONTENCODING_UTF8).
701 virtual void SetEncoding(wxFontEncoding encoding
);
704 Sets the facename for the font.
707 A valid facename, which should be on the end-user's system.
709 @remarks To avoid portability problems, don't rely on a specific face,
710 but specify the font family instead (see ::wxFontFamily and SetFamily()).
712 @return @true if the given face name exists; if the face name doesn't exist
713 in the user's system then the font is invalidated (so that IsOk() will
714 return @false) and @false is returned.
716 @see GetFaceName(), SetFamily()
718 virtual bool SetFaceName(const wxString
& faceName
);
721 Sets the font family.
723 As described in ::wxFontFamily docs the given @a family value acts as a rough,
724 basic indication of the main font properties (look, spacing).
726 Note that changing the font family results in changing the font face name.
729 One of the ::wxFontFamily values.
731 @see GetFamily(), SetFaceName()
733 virtual void SetFamily(wxFontFamily family
);
736 Creates the font corresponding to the given native font description string
737 which must have been previously returned by GetNativeFontInfoDesc().
739 If the string is invalid, font is unchanged.
740 This function is typically used for de-serializing a wxFont object
741 previously saved in a string-form.
743 @return @true if the creation was successful.
745 @see SetNativeFontInfoUserDesc()
747 bool SetNativeFontInfo(const wxString
& info
);
750 Creates the font corresponding to the given native font description string and
751 returns @true if the creation was successful.
753 Unlike SetNativeFontInfo(), this function accepts strings which are user-friendly.
754 Examples of accepted string formats are:
757 @hdr3col{platform, generic syntax, example}
758 @row3col{wxGTK2, <tt>[FACE-NAME] [bold] [oblique|italic] [POINTSIZE]</tt>, Monospace bold 10}
759 @row3col{wxMSW, <tt>[light|bold] [italic] [FACE-NAME] [POINTSIZE] [ENCODING]</tt>, Tahoma 10 WINDOWS-1252}
762 @todo add an example for wxMac
764 For more detailed information about the allowed syntaxes you can look at the
765 documentation of the native API used for font-rendering
766 (e.g. @c pango_font_description_from_string on GTK).
768 Note that unlike SetNativeFontInfo(), this function doesn't always restore all
769 attributes of the wxFont object under all platforms; e.g. on wxMSW the font family
770 is not restored (because GetNativeFontInfoUserDesc doesn't return it on wxMSW).
771 If you want to serialize/deserialize a font in string form, you should use
772 GetNativeFontInfoDesc() and SetNativeFontInfo() instead.
774 @see SetNativeFontInfo()
776 bool SetNativeFontInfoUserDesc(const wxString
& info
);
781 The <em>point size</em> is defined as 1/72 of the anglo-Saxon inch
782 (25.4 mm): it is approximately 0.0139 inch or 352.8 um.
789 virtual void SetPointSize(int pointSize
);
794 The height parameter of @a pixelSize must be positive while the width
795 parameter may also be zero (to indicate that you're not interested in the
796 width of the characters: a suitable width will be chosen for best rendering).
798 This feature (specifying the font pixel size) is directly supported only
799 under wxMSW and wxGTK currently; under other platforms a font with the
800 closest size to the given one is found using binary search (this maybe slower).
804 virtual void SetPixelSize(const wxSize
& pixelSize
);
810 One of the ::wxFontStyle enumeration values.
814 virtual void SetStyle(wxFontStyle style
);
817 Sets the font size using a predefined symbolic size name.
819 This function allows to change font size to be (very) large or small
820 compared to the standard font size.
822 @see SetSymbolicSizeRelativeTo().
826 void SetSymbolicSize(wxFontSymbolicSize size
);
829 Sets the font size compared to the base font size.
831 This is the same as SetSymbolicSize() except that it uses the given
832 font size as the normal font size instead of the standard font size.
836 void SetSymbolicSizeRelativeTo(wxFontSymbolicSize size
, int base
);
842 @true to underline, @false otherwise.
846 virtual void SetUnderlined(bool underlined
);
849 Sets the font weight.
852 One of the ::wxFontWeight values.
856 virtual void SetWeight(wxFontWeight weight
);
864 See @ref overview_refcount_equality "reference-counted object comparison" for
867 bool operator!=(const wxFont
& font
) const;
872 See @ref overview_refcount_equality "reference-counted object comparison" for
875 bool operator==(const wxFont
& font
) const;
878 Assignment operator, using @ref overview_refcount "reference counting".
880 wxFont
& operator =(const wxFont
& font
);
886 Returns the current application's default encoding.
888 @see @ref overview_fontencoding, SetDefaultEncoding()
890 static wxFontEncoding
GetDefaultEncoding();
893 Sets the default font encoding.
895 @see @ref overview_fontencoding, GetDefaultEncoding()
897 static void SetDefaultEncoding(wxFontEncoding encoding
);
901 This function takes the same parameters as the relative
902 @ref wxFont::wxFont "wxFont constructor" and returns a new font
903 object allocated on the heap.
905 static wxFont
* New(int pointSize
, wxFontFamily family
, wxFontStyle style
,
907 bool underline
= false,
908 const wxString
& faceName
= wxEmptyString
,
909 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
910 static wxFont
* New(int pointSize
, wxFontFamily family
,
911 int flags
= wxFONTFLAG_DEFAULT
,
912 const wxString
& faceName
= wxEmptyString
,
913 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
914 static wxFont
* New(const wxSize
& pixelSize
,
918 bool underline
= false,
919 const wxString
& faceName
= wxEmptyString
,
920 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
921 static wxFont
* New(const wxSize
& pixelSize
,
923 int flags
= wxFONTFLAG_DEFAULT
,
924 const wxString
& faceName
= wxEmptyString
,
925 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
936 Equivalent to wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).
938 @see wxSystemSettings
940 wxFont wxNORMAL_FONT
;
943 A font using the @c wxFONTFAMILY_SWISS family and 2 points smaller than
949 A font using the @c wxFONTFAMILY_ROMAN family and @c wxFONTSTYLE_ITALIC style and
950 of the same size of ::wxNORMAL_FONT.
952 wxFont wxITALIC_FONT
;
955 A font identic to ::wxNORMAL_FONT except for the family used which is
956 @c wxFONTFAMILY_SWISS.
964 A font list is a list containing all fonts which have been created.
965 There is only one instance of this class: ::wxTheFontList.
967 Use this object to search for a previously created font of the desired type
968 and create it if not already found.
970 In some windowing systems, the font may be a scarce resource, so it is best to
971 reuse old resources if possible. When an application finishes, all fonts will
972 be deleted and their resources freed, eliminating the possibility of 'memory
980 class wxFontList
: public wxList
984 Constructor. The application should not construct its own font list:
985 use the object pointer ::wxTheFontList.
990 Finds a font of the given specification, or creates one and adds it to the
991 list. See the @ref wxFont "wxFont constructor" for details of the arguments.
993 wxFont
* FindOrCreateFont(int point_size
, wxFontFamily family
, wxFontStyle style
,
994 wxFontWeight weight
, bool underline
= false,
995 const wxString
& facename
= wxEmptyString
,
996 wxFontEncoding encoding
= wxFONTENCODING_DEFAULT
);
1001 The global wxFontList instance.
1003 wxFontList
* wxTheFontList
;
1006 // ============================================================================
1007 // Global functions/macros
1008 // ============================================================================
1010 /** @addtogroup group_funcmacro_misc */
1014 Converts string to a wxFont best represented by the given string. Returns
1017 @see wxToString(const wxFont&)
1021 bool wxFromString(const wxString
& string
, wxFont
* font
);
1024 Converts the given wxFont into a string.
1026 @see wxFromString(const wxString&, wxFont*)
1030 wxString
wxToString(const wxFont
& font
);