]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/font.tex
On wxMac don't call Refresh from FullPaint as that is the biggest
[wxWidgets.git] / docs / latex / wx / font.tex
index de553defbbab195c0f00492d231733b4ecbfe44f..a3ca844583afbcfddc68ebc754d11c435d074593 100644 (file)
@@ -4,34 +4,173 @@ 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.
 
+You can retrieve the current system font settings with \helpref{wxSystemSettings}{wxsystemsettings}.
+
+\helpref{wxSystemSettings}{wxsystemsettings}
+
 \wxheading{Derived from}
 
 \helpref{wxGDIObject}{wxgdiobject}\\
 \helpref{wxObject}{wxobject}
 
+\wxheading{Include files}
+
+<wx/font.h>
+
+\wxheading{Constants}
+
+The possible values for the \arg{family} parameter of \helpref{wxFont
+constructor}{wxfontctor} are (the old names are for compatibility only):
+
+\begin{verbatim}
+enum wxFontFamily
+{
+    wxFONTFAMILY_DEFAULT = wxDEFAULT,
+    wxFONTFAMILY_DECORATIVE = wxDECORATIVE,
+    wxFONTFAMILY_ROMAN = wxROMAN,
+    wxFONTFAMILY_SCRIPT = wxSCRIPT,
+    wxFONTFAMILY_SWISS = wxSWISS,
+    wxFONTFAMILY_MODERN = wxMODERN,
+    wxFONTFAMILY_TELETYPE = wxTELETYPE,
+    wxFONTFAMILY_MAX
+};
+\end{verbatim}
+
+The font flags which can be used during the font creation are:
+
+\begin{verbatim}
+enum
+{
+    // no special flags: font with default weight/slant/anti-aliasing
+    wxFONTFLAG_DEFAULT          = 0,
+
+    // slant flags (default: no slant)
+    wxFONTFLAG_ITALIC           = 1 << 0,
+    wxFONTFLAG_SLANT            = 1 << 1,
+
+    // weight flags (default: medium)
+    wxFONTFLAG_LIGHT            = 1 << 2,
+    wxFONTFLAG_BOLD             = 1 << 3,
+
+    // anti-aliasing flag: force on or off (default: the current system default)
+    wxFONTFLAG_ANTIALIASED      = 1 << 4,
+    wxFONTFLAG_NOT_ANTIALIASED  = 1 << 5,
+
+    // underlined/strikethrough flags (default: no lines)
+    wxFONTFLAG_UNDERLINED       = 1 << 6,
+    wxFONTFLAG_STRIKETHROUGH    = 1 << 7,
+};
+\end{verbatim}
+
+The known font encodings are:
+
+\begin{verbatim}
+enum wxFontEncoding
+{
+    wxFONTENCODING_SYSTEM = -1,     // system default
+    wxFONTENCODING_DEFAULT,         // current default encoding
+
+    // ISO8859 standard defines a number of single-byte charsets
+    wxFONTENCODING_ISO8859_1,       // West European (Latin1)
+    wxFONTENCODING_ISO8859_2,       // Central and East European (Latin2)
+    wxFONTENCODING_ISO8859_3,       // Esperanto (Latin3)
+    wxFONTENCODING_ISO8859_4,       // Baltic (old) (Latin4)
+    wxFONTENCODING_ISO8859_5,       // Cyrillic
+    wxFONTENCODING_ISO8859_6,       // Arabic
+    wxFONTENCODING_ISO8859_7,       // Greek
+    wxFONTENCODING_ISO8859_8,       // Hebrew
+    wxFONTENCODING_ISO8859_9,       // Turkish (Latin5)
+    wxFONTENCODING_ISO8859_10,      // Variation of Latin4 (Latin6)
+    wxFONTENCODING_ISO8859_11,      // Thai
+    wxFONTENCODING_ISO8859_12,      // doesn't exist currently, but put it
+                                    // here anyhow to make all ISO8859
+                                    // consecutive numbers
+    wxFONTENCODING_ISO8859_13,      // Baltic (Latin7)
+    wxFONTENCODING_ISO8859_14,      // Latin8
+    wxFONTENCODING_ISO8859_15,      // Latin9 (a.k.a. Latin0, includes euro)
+    wxFONTENCODING_ISO8859_MAX,
+
+    // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
+    wxFONTENCODING_KOI8,            // we don't support any of KOI8 variants
+    wxFONTENCODING_ALTERNATIVE,     // same as MS-DOS CP866
+    wxFONTENCODING_BULGARIAN,       // used under Linux in Bulgaria
+
+    // what would we do without Microsoft? They have their own encodings
+        // for DOS
+    wxFONTENCODING_CP437,           // original MS-DOS codepage
+    wxFONTENCODING_CP850,           // CP437 merged with Latin1
+    wxFONTENCODING_CP852,           // CP437 merged with Latin2
+    wxFONTENCODING_CP855,           // another cyrillic encoding
+    wxFONTENCODING_CP866,           // and another one
+        // and for Windows
+    wxFONTENCODING_CP874,           // WinThai
+    wxFONTENCODING_CP1250,          // WinLatin2
+    wxFONTENCODING_CP1251,          // WinCyrillic
+    wxFONTENCODING_CP1252,          // WinLatin1
+    wxFONTENCODING_CP1253,          // WinGreek (8859-7)
+    wxFONTENCODING_CP1254,          // WinTurkish
+    wxFONTENCODING_CP1255,          // WinHebrew
+    wxFONTENCODING_CP1256,          // WinArabic
+    wxFONTENCODING_CP1257,          // WinBaltic (same as Latin 7)
+    wxFONTENCODING_CP12_MAX,
+
+    wxFONTENCODING_UTF7,            // UTF-7 Unicode encoding
+    wxFONTENCODING_UTF8,            // UTF-8 Unicode encoding
+
+    wxFONTENCODING_UNICODE,         // Unicode - currently used only by
+                                    // wxEncodingConverter class
+
+    wxFONTENCODING_MAX
+};
+\end{verbatim}
+
+\wxheading{Predefined objects}
+
+Objects:
+
+{\bf wxNullFont}
+
+Pointers:
+
+{\bf wxNORMAL\_FONT\\
+wxSMALL\_FONT\\
+wxITALIC\_FONT\\
+wxSWISS\_FONT}
+
 \wxheading{See also}
 
 \helpref{wxFont overview}{wxfontoverview}, \helpref{wxDC::SetFont}{wxdcsetfont},\rtfsp
 \helpref{wxDC::DrawText}{wxdcdrawtext}, \helpref{wxDC::GetTextExtent}{wxdcgettextextent},\rtfsp
-\helpref{wxFontDialog}{wxfontdialog}
+\helpref{wxFontDialog}{wxfontdialog}, \helpref{wxSystemSettings}{wxsystemsettings}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
-\membersection{wxFont::wxFont}\label{wxfontconstr}
+
+\membersection{wxFont::wxFont}\label{wxfontctor}
 
 \func{}{wxFont}{\void}
 
 Default constructor.
 
-\func{}{wxFont}{\param{int}{ pointSize}, \param{int}{ family}, \param{int}{ style}, \param{int}{ weight},
- \param{const bool}{ underline = FALSE}, \param{const wxString\& }{faceName = ""}}
+\func{}{wxFont}{\param{int}{ pointSize}, \param{wxFontFamily}{ family}, \param{int}{ style}, \param{int}{ weight},
+ \param{const bool}{ underline = false}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
+
+\func{}{wxFont}{\param{const wxSize\&}{ pixelSize}, \param{wxFontFamily}{ family}, \param{int}{ style}, \param{int}{ weight},
+ \param{const bool}{ underline = false}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
 
-Creates a font object.
+Creates a font object with the specified attributes.
 
 \wxheading{Parameters}
 
 \docparam{pointSize}{Size in points.}
 
+\docparam{pixelSize}{Size in pixels: this is directly supported only under MSW
+currently where this constructor can be used directly, under other platforms a
+font with the closest size to the given one is found using binary search and
+the static \helpref{New}{wxfontnew} method must be used.}
+
 \docparam{family}{Font family, a generic way of referring to fonts without specifying actual facename. One of:
 
 \twocolwidtha{5cm}
@@ -48,22 +187,38 @@ Creates a font object.
 
 \docparam{weight}{One of {\bf wxNORMAL}, {\bf wxLIGHT} and {\bf wxBOLD}.}
 
-\docparam{underline}{The value can be TRUE or FALSE. At present this has an effect on Windows only.}
+\docparam{underline}{The value can be true or false. At present this has an effect on Windows and Motif 2.x only.}
+
+\docparam{faceName}{An optional string specifying the actual typeface to be used. If it is an empty string,
+a default typeface will be chosen based on the family.}
 
-\docparam{faceName}{An optional string specifying the actual typeface to be used. If the empty string,
-a default typeface will chosen based on the family.}
+\docparam{encoding}{An encoding which may be one of
+\twocolwidtha{5cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf wxFONTENCODING\_SYSTEM}}{Default system encoding.}
+\twocolitem{{\bf wxFONTENCODING\_DEFAULT}}{Default application encoding: this
+is the encoding set by calls to 
+\helpref{SetDefaultEncoding}{wxfontsetdefaultencoding} 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.}
+\twocolitem{{\bf wxFONTENCODING\_ISO8859\_1...15}}{ISO8859 encodings.}
+\twocolitem{{\bf wxFONTENCODING\_KOI8}}{The standard Russian encoding for Internet.}
+\twocolitem{{\bf wxFONTENCODING\_CP1250...1252}}{Windows encodings similar to ISO8859 (but not identical).}
+\end{twocollist}
+If the specified encoding isn't available, no font is created
+(see also \helpref{font encoding overview}{wxfontencodingoverview}).
+}
 
 \wxheading{Remarks}
 
 If the desired font does not exist, the closest match will be chosen.
-Under Windows, only scaleable TrueType fonts are used.
-
-Underlining only works under Windows at present.
+Under Windows, only scalable TrueType fonts are used.
 
 See also \helpref{wxDC::SetFont}{wxdcsetfont}, \helpref{wxDC::DrawText}{wxdcdrawtext}
 and \helpref{wxDC::GetTextExtent}{wxdcgettextextent}.
 
-\membersection{wxFont::\destruct{wxFont}}
+
+\membersection{wxFont::\destruct{wxFont}}\label{wxfontdtor}
 
 \func{}{\destruct{wxFont}}{\void}
 
@@ -72,13 +227,34 @@ Destructor.
 \wxheading{Remarks}
 
 The destructor may not delete the underlying font object of the native windowing
-system, since wxBrush uses a reference counting system for efficiency.
+system, since wxFont uses a reference counting system for efficiency.
 
 Although all remaining fonts are deleted when the application exits,
 the application should try to clean up all fonts itself. This is because
-wxWindows cannot know if a pointer to the font object is stored in an
+wxWidgets cannot know if a pointer to the font object is stored in an
 application data structure, and there is a risk of double deletion.
 
+
+\membersection{wxFont::IsFixedWidth}\label{wxfontisfixedwidth}
+
+\constfunc{bool}{IsFixedWidth}{\void}
+
+Returns {\tt true} if the font is a fixed width (or monospaced) font, 
+{\tt false} if it is a proportional one or font is invalid.
+
+
+\membersection{wxFont::GetDefaultEncoding}\label{wxfontgetdefaultencoding}
+
+\func{static wxFontEncoding}{GetDefaultEncoding}{\void}
+
+Returns the current application's default encoding.
+
+\wxheading{See also}
+
+\helpref{Font encoding overview}{wxfontencodingoverview}, 
+\helpref{SetDefaultEncoding}{wxfontsetdefaultencoding}
+
+
 \membersection{wxFont::GetFaceName}\label{wxfontgetfacename}
 
 \constfunc{wxString}{GetFaceName}{\void}
@@ -90,23 +266,30 @@ typeface information.
 
 \helpref{wxFont::SetFaceName}{wxfontsetfacename}
 
+
 \membersection{wxFont::GetFamily}\label{wxfontgetfamily}
 
 \constfunc{int}{GetFamily}{\void}
 
-Gets the font family. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid
+Gets the font family. See \helpref{wxFont::wxFont}{wxfontctor} for a list of valid
 family identifiers.
 
 \wxheading{See also}
 
 \helpref{wxFont::SetFamily}{wxfontsetfamily}
 
-\membersection{wxFont::GetFontId}\label{wxfontgetfontid}
 
-\constfunc{int}{GetFontId}{\void}
+\membersection{wxFont::GetNativeFontInfoDesc}\label{wxfontgetnativefontinfodesc}
+
+\constfunc{wxString}{GetNativeFontInfoDesc}{\void}
+
+Returns the platform-dependent string completely describing this font or an
+empty string if the font wasn't constructed using the native font description.
+
+\wxheading{See also}
+
+\helpref{wxFont::SetNativeFontInfo}{wxfontsetnativefontinfo}
 
-Returns the font id, if the portable font system is in operation. See \helpref{Font overview}{wxfontoverview} for
-further details.
 
 \membersection{wxFont::GetPointSize}\label{wxfontgetpointsize}
 
@@ -118,38 +301,86 @@ Gets the point size.
 
 \helpref{wxFont::SetPointSize}{wxfontsetpointsize}
 
+
 \membersection{wxFont::GetStyle}\label{wxfontgetstyle}
 
 \constfunc{int}{GetStyle}{\void}
 
-Gets the font style. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid
+Gets the font style. See \helpref{wxFont::wxFont}{wxfontctor} for a list of valid
 styles.
 
 \wxheading{See also}
 
 \helpref{wxFont::SetStyle}{wxfontsetstyle}
 
+
 \membersection{wxFont::GetUnderlined}\label{wxfontgetunderlined}
 
 \constfunc{bool}{GetUnderlined}{\void}
 
-Returns TRUE if the font is underlined, FALSE otherwise.
+Returns true if the font is underlined, false otherwise.
 
 \wxheading{See also}
 
 \helpref{wxFont::SetUnderlined}{wxfontsetunderlined}
 
+
 \membersection{wxFont::GetWeight}\label{wxfontgetweight}
 
 \constfunc{int}{GetWeight}{\void}
 
-Gets the font weight. See \helpref{wxFont::wxFont}{wxfontconstr} for a list of valid
+Gets the font weight. See \helpref{wxFont::wxFont}{wxfontctor} for a list of valid
 weight identifiers.
 
 \wxheading{See also}
 
 \helpref{wxFont::SetWeight}{wxfontsetweight}
 
+
+\membersection{wxFont::New}\label{wxfontnew}
+
+\func{static wxFont *}{New}{\param{int}{ pointSize}, \param{wxFontFamily}{ family}, \param{int}{ style}, \param{int}{ weight},
+ \param{const bool}{ underline = false}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
+
+\func{static wxFont *}{New}{\param{int}{ pointSize}, \param{wxFontFamily}{ family}, 
+ \param{int}{ flags = \texttt{wxFONTFLAG\_DEFAULT}}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
+
+\func{static wxFont *}{New}{\param{const wxSize\&}{ pixelSize}, \param{wxFontFamily}{ family}, \param{int}{ style}, \param{int}{ weight},
+ \param{const bool}{ underline = false}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
+
+\func{static wxFont *}{New}{\param{const wxSize\&}{ pixelSize}, \param{wxFontFamily}{ family}, 
+ \param{int}{ flags = \texttt{wxFONTFLAG\_DEFAULT}}, \param{const wxString\& }{faceName = ""},
+ \param{wxFontEncoding }{encoding = wxFONTENCODING\_DEFAULT}}
+
+These functions take the same parameters as \helpref{wxFont
+constructor}{wxfontctor} and return a new font object allocated on the heap.
+
+Using \texttt{New()} is currently the only way to directly create a font with
+the given size in pixels on platforms other than wxMSW.
+
+
+\membersection{wxFont::Ok}\label{wxfontok}
+
+\constfunc{bool}{Ok}{\void}
+
+Returns {\tt true} if this object is a valid font, {\tt false} otherwise.
+
+
+\membersection{wxFont::SetDefaultEncoding}\label{wxfontsetdefaultencoding}
+
+\func{static void}{SetDefaultEncoding}{\param{wxFontEncoding }{encoding}}
+
+Sets the default font encoding.
+
+\wxheading{See also}
+
+\helpref{Font encoding overview}{wxfontencodingoverview}, 
+\helpref{GetDefaultEncoding}{wxfontgetdefaultencoding}
+
+
 \membersection{wxFont::SetFaceName}\label{wxfontsetfacename}
 
 \func{void}{SetFaceName}{\param{const wxString\& }{faceName}}
@@ -164,13 +395,14 @@ Sets the facename for the font.
 
 To avoid portability problems, don't rely on a specific face, but specify the font family
 instead or as well. A suitable font will be found on the end-user's system. If both the
-family and the facename are specified, wxWindows will first search for the specific face,
+family and the facename are specified, wxWidgets will first search for the specific face,
 and then for a font belonging to the same family.
 
 \wxheading{See also}
 
 \helpref{wxFont::GetFaceName}{wxfontgetfacename}, \helpref{wxFont::SetFamily}{wxfontsetfamily}
 
+
 \membersection{wxFont::SetFamily}\label{wxfontsetfamily}
 
 \func{void}{SetFamily}{\param{int}{ family}}
@@ -195,6 +427,17 @@ Sets the font family.
 
 \helpref{wxFont::GetFamily}{wxfontgetfamily}, \helpref{wxFont::SetFaceName}{wxfontsetfacename}
 
+
+\membersection{wxFont::SetNativeFontInfo}\label{wxfontsetnativefontinfo}
+
+\func{void}{SetNativeFontInfo}{\param{const wxString\& }{info}}
+
+Creates the font corresponding to the given native font description string
+which must have been previously returned by 
+\helpref{GetNativeFontInfoDesc}{wxfontgetnativefontinfodesc}. If the string is
+invalid, font is unchanged.
+
+
 \membersection{wxFont::SetPointSize}\label{wxfontsetpointsize}
 
 \func{void}{SetPointSize}{\param{int}{ pointSize}}
@@ -209,6 +452,7 @@ Sets the point size.
 
 \helpref{wxFont::GetPointSize}{wxfontgetpointsize}
 
+
 \membersection{wxFont::SetStyle}\label{wxfontsetstyle}
 
 \func{void}{SetStyle}{\param{int}{ style}}
@@ -223,6 +467,7 @@ Sets the font style.
 
 \helpref{wxFont::GetStyle}{wxfontgetstyle}
 
+
 \membersection{wxFont::SetUnderlined}\label{wxfontsetunderlined}
 
 \func{void}{SetUnderlined}{\param{const bool}{ underlined}}
@@ -231,12 +476,13 @@ Sets underlining.
 
 \wxheading{Parameters}
 
-\docparam{underlining}{TRUE to underline, FALSE otherwise.}
+\docparam{underlining}{true to underline, false otherwise.}
 
 \wxheading{See also}
 
 \helpref{wxFont::GetUnderlined}{wxfontgetunderlined}
 
+
 \membersection{wxFont::SetWeight}\label{wxfontsetweight}
 
 \func{void}{SetWeight}{\param{int}{ weight}}
@@ -251,6 +497,7 @@ Sets the font weight.
 
 \helpref{wxFont::GetWeight}{wxfontgetweight}
 
+
 \membersection{wxFont::operator $=$}\label{wxfontassignment}
 
 \func{wxFont\&}{operator $=$}{\param{const wxFont\& }{font}}
@@ -258,15 +505,17 @@ Sets the font weight.
 Assignment operator, using reference counting. Returns a reference
 to `this'.
 
+
 \membersection{wxFont::operator $==$}\label{wxfontequals}
 
 \func{bool}{operator $==$}{\param{const wxFont\& }{font}}
 
 Equality operator. Two fonts are equal if they contain pointers
 to the same underlying font data. It does not compare each attribute,
-so two indefontdently-created fonts using the same parameters will
+so two independently-created fonts using the same parameters will
 fail the test.
 
+
 \membersection{wxFont::operator $!=$}\label{wxfontnotequals}
 
 \func{bool}{operator $!=$}{\param{const wxFont\& }{font}}
@@ -274,4 +523,3 @@ fail the test.
 Inequality operator. Two fonts are not equal if they contain pointers
 to different underlying font data. It does not compare each attribute.
 
-