X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eaaa6a06a25774c18d10bb8182cc1934ed0ed9aa..027aa6fa77e5b4643d2296f63d6911beb496c5bc:/docs/latex/wx/font.tex diff --git a/docs/latex/wx/font.tex b/docs/latex/wx/font.tex index de553defbb..143072991b 100644 --- a/docs/latex/wx/font.tex +++ b/docs/latex/wx/font.tex @@ -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} + + + +\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 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. -