775a998ed0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
86 lines
4.6 KiB
TeX
86 lines
4.6 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
%% Name: tfontenc.tex
|
||
%% Purpose: font encoding overview
|
||
%% Author: Vadim Zeitlin
|
||
%% Modified by:
|
||
%% Created: 03.11.99
|
||
%% RCS-ID: $Id$
|
||
%% Copyright: (c) Vadim Zeitlin
|
||
%% Licence: wxWindows licence
|
||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||
|
||
\section{Font encoding overview}\label{wxfontencodingoverview}
|
||
|
||
wxWindows has support for multiple font encodings starting from release 2.2.
|
||
By encoding we mean here the mapping between the character codes and the
|
||
letters. Probably the most well-known encoding is (7 bit) ASCII one which is
|
||
used almost universally now to represent the letters of the English alphabet
|
||
and some other common characters. However, it is not enough to represent the
|
||
letters of foreign alphabetes and here other encodings come into play. Please
|
||
note that we will only discuss 8-bit fonts here and not
|
||
\helpref{Unicode}{unicode}.
|
||
|
||
Font encoding support is assured by several classes:
|
||
\helpref{wxFont}{wxfont} itself, but also
|
||
\helpref{wxFontEnumerator}{wxfontenumerator} and
|
||
\helpref{wxFontMapper}{wxfontmapper}. wxFont encoding support is reflected by
|
||
a (new) constructor parameter {\it encoding} which takes one of the following
|
||
values (elements of enumeration type {\tt wxFontEncoding}):
|
||
|
||
\begin{twocollist}
|
||
\twocolitem{wxFONTENCODING\_SYSTEM}{The default encoding of the underlying
|
||
operating system (notice that this might be a "foreign" encoding for foreign
|
||
versions of Windows 9x/NT).}
|
||
\twocolitem{wxFONTENCODING\_DEFAULT}{The applications default encoding as
|
||
returned by \helpref{wxFont::GetDefaultEncoding}{wxfontgetdefaultencoding}. On
|
||
program startup, the applications default encoding is the same as
|
||
wxFONTENCODING\_SYSTEM, but may be changed to make all the fonts created later
|
||
to use it (by default).}
|
||
\twocolitem{wxFONTENCODING\_ISO8859\_1..15}{ISO8859 family encodings which are
|
||
usually used by all non-Microsoft operating systems}
|
||
\twocolitem{wxFONTENCODING\_KOI8}{Standard cyrillic encoding for the Internet
|
||
(but see also wxFONTENCODING\_ISO8859\_5 and wxFONTENCODING\_CP1251)}
|
||
\twocolitem{wxFONTENCODING\_CP1250}{Microsoft analogue of ISO8859-2}
|
||
\twocolitem{wxFONTENCODING\_CP1251}{Microsoft analogue of ISO8859-5}
|
||
\twocolitem{wxFONTENCODING\_CP1252}{Microsoft analogue of ISO8859-1}
|
||
\end{twocollist}
|
||
|
||
As you may see, Microsofts encoding partly mirror the standard ISO8859 ones,
|
||
but there are (minor) differences even between ISO8859-1 (Latin1, ISO encoding
|
||
for Western Europe) and CP1251 (WinLatin1, standard code page for English
|
||
versions of Windows) and there are more of them for other encodings.
|
||
|
||
The situation is particularly complicated with cyrillic encodings for which
|
||
(more than) three incompatible encodings exist: KOI8 (the old standard, widely
|
||
used on the Internet), ISO8859-5 (ISO standard for cyrillic) and CP1251
|
||
(WinCyrillic).
|
||
|
||
This abundance of (incompatible) encodigns should make it clear that using
|
||
encodings is less easy than it might seem. The problems arise both from the
|
||
fact that the standard encodigns for the given language (say Russian, which is
|
||
written in cyrillic) are different on different platforms and because the
|
||
fonts in the given encoding might just not be installed (this is especially a
|
||
problem with Unix, or, in general, not Win32, systems).
|
||
|
||
To allow to see clearer in this, \helpref{wxFontEnumerator}{wxfontenumerator}
|
||
class may be used to enumerate both all available encodings and to find the
|
||
facename(s) in which the given encoding exists. If you can find the font in
|
||
the correct encoding with wxFontEnumerator then your troubles are over, but,
|
||
unfortunately, sometimes this is not enough. For example, there is no standard
|
||
way (I know of, please tell me if you do!) to find a font on a Windows system
|
||
for KOI8 encoding (only for WinCyrillic one which is quite different), so
|
||
\helpref{wxFontEnumerator}{wxfontenumerator} will never return one, even if
|
||
the user has installed a KOI8 font on his system.
|
||
|
||
To solve this problem, \helpref{wxFontMapper}{wxfontmapper} class is provided.
|
||
This class stores the mapping between the encodings and the font face
|
||
names<EFBFBD>which support them in a \helpref{wxConfig}{wxconfigoverview} object. Of
|
||
course, it would be fairly useless if it tried to determine these mappings by
|
||
itself, so, instead, it may (optionally) ask the user and remember his answers
|
||
so that the next time the program will automatically choose the correct font.
|
||
|
||
All these topics are illustrated by the \helpref{font sample}{samplefont},
|
||
please refer to it and the documentation of the classes mentioned here for
|
||
further explanations.
|
||
|