1
/***************************************************************************/
5
/* FreeType API for accessing Windows fnt-specific data. */
7
/* Copyright 2003, 2004, 2008 by */
8
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
10
/* This file is part of the FreeType project, and may only be used, */
11
/* modified, and distributed under the terms of the FreeType project */
12
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13
/* this file you indicate that you have read the license and */
14
/* understand and accept it fully. */
16
/***************************************************************************/
19
#ifndef __FTWINFNT_H__
20
#define __FTWINFNT_H__
23
#include FT_FREETYPE_H
26
#error "freetype.h of FreeType 1 has been loaded!"
27
#error "Please fix the directory search order for header files"
28
#error "so that freetype.h of FreeType 2 is found first."
35
/*************************************************************************/
41
/* Window FNT Files */
44
/* Windows FNT specific API. */
47
/* This section contains the declaration of Windows FNT specific */
50
/*************************************************************************/
53
/*************************************************************************
59
* A list of valid values for the `charset' byte in
60
* @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX
61
* encodings (except for cp1361) can be found at ftp://ftp.unicode.org
62
* in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is
63
* roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
66
* FT_WinFNT_ID_DEFAULT ::
67
* This is used for font enumeration and font creation as a
68
* `don't care' value. Valid font files don't contain this value.
69
* When querying for information about the character set of the font
70
* that is currently selected into a specified device context, this
71
* return value (of the related Windows API) simply denotes failure.
73
* FT_WinFNT_ID_SYMBOL ::
74
* There is no known mapping table available.
80
* From Michael Pöttgen <michael@poettgen.de>:
82
* The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
83
* is used for the charset of vector fonts, like `modern.fon',
84
* `roman.fon', and `script.fon' on Windows.
86
* The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
87
* specifies a character set that is operating-system dependent.
89
* The `IFIMETRICS' documentation from the `Windows Driver
90
* Development Kit' says: This font supports an OEM-specific
91
* character set. The OEM character set is system dependent.
93
* In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
94
* second default codepage that most international versions of
95
* Windows have. It is one of the OEM codepages from
97
* http://www.microsoft.com/globaldev/reference/cphome.mspx,
99
* and is used for the `DOS boxes', to support legacy applications.
100
* A German Windows version for example usually uses ANSI codepage
101
* 1252 and OEM codepage 850.
103
* FT_WinFNT_ID_CP874 ::
104
* A superset of Thai TIS 620 and ISO 8859-11.
106
* FT_WinFNT_ID_CP932 ::
107
* A superset of Japanese Shift-JIS (with minor deviations).
109
* FT_WinFNT_ID_CP936 ::
110
* A superset of simplified Chinese GB 2312-1980 (with different
111
* ordering and minor deviations).
113
* FT_WinFNT_ID_CP949 ::
114
* A superset of Korean Hangul KS~C 5601-1987 (with different
115
* ordering and minor deviations).
117
* FT_WinFNT_ID_CP950 ::
118
* A superset of traditional Chinese Big~5 ETen (with different
119
* ordering and minor deviations).
121
* FT_WinFNT_ID_CP1250 ::
122
* A superset of East European ISO 8859-2 (with slightly different
125
* FT_WinFNT_ID_CP1251 ::
126
* A superset of Russian ISO 8859-5 (with different ordering).
128
* FT_WinFNT_ID_CP1252 ::
129
* ANSI encoding. A superset of ISO 8859-1.
131
* FT_WinFNT_ID_CP1253 ::
132
* A superset of Greek ISO 8859-7 (with minor modifications).
134
* FT_WinFNT_ID_CP1254 ::
135
* A superset of Turkish ISO 8859-9.
137
* FT_WinFNT_ID_CP1255 ::
138
* A superset of Hebrew ISO 8859-8 (with some modifications).
140
* FT_WinFNT_ID_CP1256 ::
141
* A superset of Arabic ISO 8859-6 (with different ordering).
143
* FT_WinFNT_ID_CP1257 ::
144
* A superset of Baltic ISO 8859-13 (with some deviations).
146
* FT_WinFNT_ID_CP1258 ::
147
* For Vietnamese. This encoding doesn't cover all necessary
150
* FT_WinFNT_ID_CP1361 ::
154
#define FT_WinFNT_ID_CP1252 0
155
#define FT_WinFNT_ID_DEFAULT 1
156
#define FT_WinFNT_ID_SYMBOL 2
157
#define FT_WinFNT_ID_MAC 77
158
#define FT_WinFNT_ID_CP932 128
159
#define FT_WinFNT_ID_CP949 129
160
#define FT_WinFNT_ID_CP1361 130
161
#define FT_WinFNT_ID_CP936 134
162
#define FT_WinFNT_ID_CP950 136
163
#define FT_WinFNT_ID_CP1253 161
164
#define FT_WinFNT_ID_CP1254 162
165
#define FT_WinFNT_ID_CP1258 163
166
#define FT_WinFNT_ID_CP1255 177
167
#define FT_WinFNT_ID_CP1256 178
168
#define FT_WinFNT_ID_CP1257 186
169
#define FT_WinFNT_ID_CP1251 204
170
#define FT_WinFNT_ID_CP874 222
171
#define FT_WinFNT_ID_CP1250 238
172
#define FT_WinFNT_ID_OEM 255
175
/*************************************************************************/
178
/* FT_WinFNT_HeaderRec */
181
/* Windows FNT Header info. */
183
typedef struct FT_WinFNT_HeaderRec_
187
FT_Byte copyright[60];
189
FT_UShort nominal_point_size;
190
FT_UShort vertical_resolution;
191
FT_UShort horizontal_resolution;
193
FT_UShort internal_leading;
194
FT_UShort external_leading;
200
FT_UShort pixel_width;
201
FT_UShort pixel_height;
202
FT_Byte pitch_and_family;
207
FT_Byte default_char;
209
FT_UShort bytes_per_row;
210
FT_ULong device_offset;
211
FT_ULong face_name_offset;
212
FT_ULong bits_pointer;
213
FT_ULong bits_offset;
219
FT_UShort color_table_offset;
220
FT_ULong reserved1[4];
222
} FT_WinFNT_HeaderRec;
225
/*************************************************************************/
228
/* FT_WinFNT_Header */
231
/* A handle to an @FT_WinFNT_HeaderRec structure. */
233
typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header;
236
/**********************************************************************
239
* FT_Get_WinFNT_Header
242
* Retrieve a Windows FNT font info header.
245
* face :: A handle to the input face.
248
* aheader :: The WinFNT header.
251
* FreeType error code. 0~means success.
254
* This function only works with Windows FNT faces, returning an error
257
FT_EXPORT( FT_Error )
258
FT_Get_WinFNT_Header( FT_Face face,
259
FT_WinFNT_HeaderRec *aheader );
266
#endif /* __FTWINFNT_H__ */
272
/* Local Variables: */