]> git.saurik.com Git - wxWidgets.git/blame - docs/doxygen/overviews/fontencoding.h
added wxWidgets samples
[wxWidgets.git] / docs / doxygen / overviews / fontencoding.h
CommitLineData
15b6757b
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: fontencoding
3// Purpose: topic overview
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9/*!
36c9828f 10
15b6757b 11 @page fontencoding_overview Font encoding overview
36c9828f 12
15b6757b
FM
13 wxWidgets has support for multiple font encodings.
14 By encoding we mean here the mapping between the character codes and the
15 letters. Probably the most well-known encoding is (7 bit) ASCII one which is
16 used almost universally now to represent the letters of the English alphabet
17 and some other common characters. However, it is not enough to represent the
18 letters of foreign alphabets and here other encodings come into play. Please
36c9828f 19 note that we will only discuss 8-bit fonts here and not
15b6757b 20 #Unicode.
36c9828f
FM
21 Font encoding support is ensured by several classes:
22 #wxFont itself, but also
23 #wxFontEnumerator and
15b6757b
FM
24 #wxFontMapper. wxFont encoding support is reflected by
25 a (new) constructor parameter @e encoding which takes one of the following
26 values (elements of enumeration type @c wxFontEncoding):
36c9828f
FM
27
28
29
30
31
32
15b6757b 33 wxFONTENCODING_SYSTEM
36c9828f
FM
34
35
36
37
15b6757b
FM
38 The default encoding of the underlying
39 operating system (notice that this might be a "foreign" encoding for foreign
40 versions of Windows 9x/NT).
36c9828f
FM
41
42
43
44
45
15b6757b 46 wxFONTENCODING_DEFAULT
36c9828f
FM
47
48
49
50
15b6757b
FM
51 The applications default encoding as
52 returned by wxFont::GetDefaultEncoding. On
53 program startup, the applications default encoding is the same as
54 wxFONTENCODING_SYSTEM, but may be changed to make all the fonts created later
55 to use it (by default).
36c9828f
FM
56
57
58
59
60
15b6757b 61 wxFONTENCODING_ISO8859_1..15
36c9828f
FM
62
63
64
65
15b6757b
FM
66 ISO8859 family encodings which are
67 usually used by all non-Microsoft operating systems
36c9828f
FM
68
69
70
71
72
15b6757b 73 wxFONTENCODING_KOI8
36c9828f
FM
74
75
76
77
15b6757b
FM
78 Standard Cyrillic encoding for the Internet
79 (but see also wxFONTENCODING_ISO8859_5 and wxFONTENCODING_CP1251)
36c9828f
FM
80
81
82
83
84
15b6757b 85 wxFONTENCODING_CP1250
36c9828f
FM
86
87
88
89
15b6757b 90 Microsoft analogue of ISO8859-2
36c9828f
FM
91
92
93
94
95
15b6757b 96 wxFONTENCODING_CP1251
36c9828f
FM
97
98
99
100
15b6757b 101 Microsoft analogue of ISO8859-5
36c9828f
FM
102
103
104
105
106
15b6757b 107 wxFONTENCODING_CP1252
36c9828f
FM
108
109
110
111
15b6757b 112 Microsoft analogue of ISO8859-1
36c9828f
FM
113
114
115
116
117
15b6757b
FM
118 As you may see, Microsoft's encoding partly mirror the standard ISO8859 ones,
119 but there are (minor) differences even between ISO8859-1 (Latin1, ISO encoding
120 for Western Europe) and CP1251 (WinLatin1, standard code page for English
121 versions of Windows) and there are more of them for other encodings.
122 The situation is particularly complicated with Cyrillic encodings for which
123 (more than) three incompatible encodings exist: KOI8 (the old standard, widely
124 used on the Internet), ISO8859-5 (ISO standard for Cyrillic) and CP1251
125 (WinCyrillic).
126 This abundance of (incompatible) encodings should make it clear that using
127 encodings is less easy than it might seem. The problems arise both from the
128 fact that the standard encodings for the given language (say Russian, which is
129 written in Cyrillic) are different on different platforms and because the
130 fonts in the given encoding might just not be installed (this is especially a
131 problem with Unix, or, in general, non-Win32 systems).
36c9828f 132 To clarify, the #wxFontEnumerator
15b6757b
FM
133 class may be used to enumerate both all available encodings and to find the
134 facename(s) in which the given encoding exists. If you can find the font in
135 the correct encoding with wxFontEnumerator then your troubles are over, but,
136 unfortunately, sometimes this is not enough. For example, there is no standard
137 way (that I know of, please tell me if you do!) to find a font on a Windows system
36c9828f 138 for KOI8 encoding (only for WinCyrillic one which is quite different), so
15b6757b
FM
139 #wxFontEnumerator will never return one, even if
140 the user has installed a KOI8 font on his system.
141 To solve this problem, a #wxFontMapper class is provided.
142 This class stores the mapping between the encodings and the font face
143 names which support them in #wxConfig object. Of
144 course, it would be fairly useless if it tried to determine these mappings by
145 itself, so, instead, it (optionally) asks the user and remembers his answers
146 so that the next time the program will automatically choose the correct font.
147 All these topics are illustrated by the @ref samplefont_overview;
148 please refer to it and the documentation of the classes mentioned here for
149 further explanations.
36c9828f 150
15b6757b 151 */
36c9828f
FM
152
153