* include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions
to describe the `charset' field in FT_WinFNT_HeaderRec. * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. * include/freetype/freetype.h (FT_Encoding): Improve comment, based on work by Detlef Wrkner <TetiSoft@apg.lahn.de>. * docs/CHANGES: Updated.
This commit is contained in:
parent
581ec91c27
commit
48b6ddb8a8
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2003-12-22 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
|
* include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions
|
||||||
|
to describe the `charset' field in FT_WinFNT_HeaderRec.
|
||||||
|
* src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to
|
||||||
|
FT_ENCODING_NONE except for FT_WinFNT_ID_MAC.
|
||||||
|
|
||||||
|
* include/freetype/freetype.h (FT_Encoding): Improve comment,
|
||||||
|
based on work by Detlef Würkner <TetiSoft@apg.lahn.de>.
|
||||||
|
|
||||||
|
* docs/CHANGES: Updated.
|
||||||
|
|
||||||
2003-12-22 David Turner <david@freetype.org>
|
2003-12-22 David Turner <david@freetype.org>
|
||||||
|
|
||||||
* include/freetype/ftcache.h,
|
* include/freetype/ftcache.h,
|
||||||
|
@ -42,7 +54,6 @@
|
||||||
FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in
|
FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in
|
||||||
private header for the moment)
|
private header for the moment)
|
||||||
|
|
||||||
|
|
||||||
2003-12-21 Werner Lemberg <wl@gnu.org>
|
2003-12-21 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
* src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword
|
* src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword
|
||||||
|
|
|
@ -17,6 +17,13 @@ LATEST CHANGES BETWEEN 2.1.8 and 2.1.7
|
||||||
- The FT_FACE_FLAGS_GLYPH_NAMES is now set correctly for all font
|
- The FT_FACE_FLAGS_GLYPH_NAMES is now set correctly for all font
|
||||||
formats.
|
formats.
|
||||||
|
|
||||||
|
- Some subsetted Type 1 fonts weren't parsed correctly. This bug
|
||||||
|
has been introduced in 2.1.7.
|
||||||
|
|
||||||
|
- The WinFNT driver now correctly reports FT_ENCODING_NONE for all
|
||||||
|
but one encoding. Use the new FT_WinFNT_ID_XXX values together
|
||||||
|
with FT_Get_WinFNT_Header() to get the WinFNT charset ID.
|
||||||
|
|
||||||
|
|
||||||
II. IMPORTANT CHANGES
|
II. IMPORTANT CHANGES
|
||||||
|
|
||||||
|
|
|
@ -590,6 +590,37 @@ FT_BEGIN_HEADER
|
||||||
/* the font file, for the cases when they are needed, with the Adobe */
|
/* the font file, for the cases when they are needed, with the Adobe */
|
||||||
/* values as well. */
|
/* values as well. */
|
||||||
/* */
|
/* */
|
||||||
|
/* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */
|
||||||
|
/* is not Unicode or ISO-8859-1 (otherwise it is set to */
|
||||||
|
/* FT_ENCODING_UNICODE). Use `FT_Get_BDF_Charset_ID' to find out */
|
||||||
|
/* which encoding is really present. If, for example, the */
|
||||||
|
/* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */
|
||||||
|
/* the font is encoded in KOI8-R. */
|
||||||
|
/* */
|
||||||
|
/* FT_ENCODING_NONE is always set (with a single exception) by the */
|
||||||
|
/* winfonts driver. Use `FT_Get_WinFNT_Header' and examine the */
|
||||||
|
/* `charset' field of the `FT_WinFNT_HeaderRec' structure to find out */
|
||||||
|
/* which encoding is really present. For example, FT_WinFNT_ID_CP1251 */
|
||||||
|
/* (204) means Windows code page 1251 (for Russian). */
|
||||||
|
/* */
|
||||||
|
/* FT_ENCODING_NONE is set if `platform_id' is `TT_PLATFORM_MACINTOSH' */
|
||||||
|
/* and `encoding_id' is not `TT_MAC_ID_ROMAN' (otherwise it is set to */
|
||||||
|
/* FT_ENCODING_APPLE_ROMAN). */
|
||||||
|
/* */
|
||||||
|
/* If `platform_id' is `TT_PLATFORM_MACINTOSH', use the function */
|
||||||
|
/* `FT_Get_CMap_Language_ID' to query the Mac language ID which may be */
|
||||||
|
/* needed to be able to distinguish Apple encoding variants. See */
|
||||||
|
/* */
|
||||||
|
/* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */
|
||||||
|
/* */
|
||||||
|
/* to get an idea how to do that. Basically, if the language ID is 0, */
|
||||||
|
/* dont use it, otherwise subtract 1 from the language ID. Then */
|
||||||
|
/* examine `encoding_id'. If, for example, `encoding_id' is */
|
||||||
|
/* `TT_MAC_ID_ROMAN' and the language ID (minus 1) is */
|
||||||
|
/* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */
|
||||||
|
/* `TT_MAC_ID_ARABIC' with `TT_MAC_LANGID_FARSI' means the Farsi */
|
||||||
|
/* variant the Arabic encoding. */
|
||||||
|
/* */
|
||||||
typedef enum FT_Encoding_
|
typedef enum FT_Encoding_
|
||||||
{
|
{
|
||||||
FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
|
FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ),
|
||||||
|
|
|
@ -49,10 +49,131 @@ FT_BEGIN_HEADER
|
||||||
/* */
|
/* */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* @enum:
|
||||||
|
* FT_WinFNT_ID_XXX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A list of valid values for the `charset' byte in
|
||||||
|
* @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX
|
||||||
|
* encodings (except for cp1361) can be found at ftp://ftp.unicode.org
|
||||||
|
* in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory.
|
||||||
|
*
|
||||||
|
* @values:
|
||||||
|
* FT_WinFNT_ID_DEFAULT ::
|
||||||
|
* This is used for font enumeration and font creation as a
|
||||||
|
* `don't care' value. Valid font files don't contain this value.
|
||||||
|
* When querying for information about the character set of the font
|
||||||
|
* that is currently selected into a specified device context, this
|
||||||
|
* return value (of the related Windows API) simply denotes failure.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_SYMBOL ::
|
||||||
|
* There is no known mapping table available.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_MAC ::
|
||||||
|
* Mac Roman encoding.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_OEM ::
|
||||||
|
* From Michael Pöttgen <michael@poettgen.de>:
|
||||||
|
* The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
|
||||||
|
* is used for the charset of vector fonts, like `modern.fon',
|
||||||
|
* `roman.fon', and `script.fon' on Windows.
|
||||||
|
*
|
||||||
|
* The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
|
||||||
|
* specifies a character set that is operating-system dependent.
|
||||||
|
*
|
||||||
|
* The `IFIMETRICS' documentation from the `Windows Driver
|
||||||
|
* Development Kit' says: This font supports an OEM-specific
|
||||||
|
* character set. The OEM character set is system dependent.
|
||||||
|
*
|
||||||
|
* In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
|
||||||
|
* second default codepage that most international versions of
|
||||||
|
* Windows have. It is one of the OEM codepages from
|
||||||
|
*
|
||||||
|
* http://www.microsoft.com/globaldev/reference/cphome.mspx,
|
||||||
|
*
|
||||||
|
* and is used for the `DOS boxes', to support legacy applications.
|
||||||
|
* A German Windows version for example usually uses ANSI codepage
|
||||||
|
* 1252 and OEM codepage 850.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP874 ::
|
||||||
|
* A superset of Thai TIS 620 and ISO 8859-11.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP932 ::
|
||||||
|
* A superset of Japanese Shift-JIS (with minor deviations).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP936 ::
|
||||||
|
* A superset of simplified Chinese GB 2312-1980 (with different
|
||||||
|
* ordering and minor deviations).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP949 ::
|
||||||
|
* A superset of Korean Hangul KS C 5601-1987 (with different
|
||||||
|
* ordering and minor deviations).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP950 ::
|
||||||
|
* A superset of traditional Chinese Big 5 ETen (with different
|
||||||
|
* ordering and minor deviations).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1250 ::
|
||||||
|
* A superset of East European ISO 8859-2 (with slightly different
|
||||||
|
* ordering).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1251 ::
|
||||||
|
* A superset of Russian ISO 8859-5 (with different ordering).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1252 ::
|
||||||
|
* ANSI encoding. A superset of ISO 8859-1.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1253 ::
|
||||||
|
* A superset of Greek ISO 8859-7 (with minor modifications).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1254 ::
|
||||||
|
* A superset of Turkish ISO 8859-9.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1255 ::
|
||||||
|
* A superset of Hebrew ISO 8859-8 (with some modifications).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1256 ::
|
||||||
|
* A superset of Arabic ISO 8859-6 (with different ordering).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1257 ::
|
||||||
|
* A superset of Baltic ISO 8859-13 (with some deviations).
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1258 ::
|
||||||
|
* For Vietnamese. This encoding doesn't cover all necessary
|
||||||
|
* characters.
|
||||||
|
*
|
||||||
|
* FT_WinFNT_ID_CP1361 ::
|
||||||
|
* Korean (Johab).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FT_WinFNT_ID_CP1252 0
|
||||||
|
#define FT_WinFNT_ID_DEFAULT 1
|
||||||
|
#define FT_WinFNT_ID_SYMBOL 2
|
||||||
|
#define FT_WinFNT_ID_MAC 77
|
||||||
|
#define FT_WinFNT_ID_CP932 128
|
||||||
|
#define FT_WinFNT_ID_CP949 129
|
||||||
|
#define FT_WinFNT_ID_CP1361 130
|
||||||
|
#define FT_WinFNT_ID_CP936 134
|
||||||
|
#define FT_WinFNT_ID_CP950 136
|
||||||
|
#define FT_WinFNT_ID_CP1253 161
|
||||||
|
#define FT_WinFNT_ID_CP1254 162
|
||||||
|
#define FT_WinFNT_ID_CP1258 163
|
||||||
|
#define FT_WinFNT_ID_CP1255 177
|
||||||
|
#define FT_WinFNT_ID_CP1256 178
|
||||||
|
#define FT_WinFNT_ID_CP1257 186
|
||||||
|
#define FT_WinFNT_ID_CP1251 204
|
||||||
|
#define FT_WinFNT_ID_CP874 222
|
||||||
|
#define FT_WinFNT_ID_CP1250 238
|
||||||
|
#define FT_WinFNT_ID_OEM 255
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/* */
|
/* */
|
||||||
/* <Struct> */
|
/* <Struct> */
|
||||||
/* FT_WinFNT_HeaderRec_ */
|
/* FT_WinFNT_HeaderRec */
|
||||||
/* */
|
/* */
|
||||||
/* <Description> */
|
/* <Description> */
|
||||||
/* Windows FNT Header info. */
|
/* Windows FNT Header info. */
|
||||||
|
|
|
@ -476,11 +476,18 @@
|
||||||
FT_CharMapRec charmap;
|
FT_CharMapRec charmap;
|
||||||
|
|
||||||
|
|
||||||
charmap.encoding = FT_ENCODING_UNICODE;
|
charmap.encoding = FT_ENCODING_NONE;
|
||||||
charmap.platform_id = 3;
|
charmap.platform_id = 0;
|
||||||
charmap.encoding_id = 1;
|
charmap.encoding_id = 0;
|
||||||
charmap.face = root;
|
charmap.face = root;
|
||||||
|
|
||||||
|
if ( font->header.charset == FT_WinFNT_ID_MAC )
|
||||||
|
{
|
||||||
|
charmap.encoding = FT_ENCODING_APPLE_ROMAN;
|
||||||
|
charmap.platform_id = 1;
|
||||||
|
/* charmap.encoding_id = 0; */
|
||||||
|
}
|
||||||
|
|
||||||
error = FT_CMap_New( fnt_cmap_class,
|
error = FT_CMap_New( fnt_cmap_class,
|
||||||
NULL,
|
NULL,
|
||||||
&charmap,
|
&charmap,
|
||||||
|
|
Loading…
Reference in New Issue