1 /***************************************************************************/ |
|
2 /* */ |
|
3 /* ftsnames.h */ |
|
4 /* */ |
|
5 /* Simple interface to access SFNT name tables (which are used */ |
|
6 /* to hold font names, copyright info, notices, etc.) (specification). */ |
|
7 /* */ |
|
8 /* This is _not_ used to retrieve glyph names! */ |
|
9 /* */ |
|
10 /* Copyright 1996-2001, 2002, 2003, 2006, 2009, 2010 by */ |
|
11 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
|
12 /* */ |
|
13 /* This file is part of the FreeType project, and may only be used, */ |
|
14 /* modified, and distributed under the terms of the FreeType project */ |
|
15 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
|
16 /* this file you indicate that you have read the license and */ |
|
17 /* understand and accept it fully. */ |
|
18 /* */ |
|
19 /***************************************************************************/ |
|
20 |
|
21 |
|
22 #ifndef __FT_SFNT_NAMES_H__ |
|
23 #define __FT_SFNT_NAMES_H__ |
|
24 |
|
25 |
|
26 #include <ft2build.h> |
|
27 #include FT_FREETYPE_H |
|
28 |
|
29 #ifdef FREETYPE_H |
|
30 #error "freetype.h of FreeType 1 has been loaded!" |
|
31 #error "Please fix the directory search order for header files" |
|
32 #error "so that freetype.h of FreeType 2 is found first." |
|
33 #endif |
|
34 |
|
35 |
|
36 FT_BEGIN_HEADER |
|
37 |
|
38 |
|
39 /*************************************************************************/ |
|
40 /* */ |
|
41 /* <Section> */ |
|
42 /* sfnt_names */ |
|
43 /* */ |
|
44 /* <Title> */ |
|
45 /* SFNT Names */ |
|
46 /* */ |
|
47 /* <Abstract> */ |
|
48 /* Access the names embedded in TrueType and OpenType files. */ |
|
49 /* */ |
|
50 /* <Description> */ |
|
51 /* The TrueType and OpenType specifications allow the inclusion of */ |
|
52 /* a special `names table' in font files. This table contains */ |
|
53 /* textual (and internationalized) information regarding the font, */ |
|
54 /* like family name, copyright, version, etc. */ |
|
55 /* */ |
|
56 /* The definitions below are used to access them if available. */ |
|
57 /* */ |
|
58 /* Note that this has nothing to do with glyph names! */ |
|
59 /* */ |
|
60 /*************************************************************************/ |
|
61 |
|
62 |
|
63 /*************************************************************************/ |
|
64 /* */ |
|
65 /* <Struct> */ |
|
66 /* FT_SfntName */ |
|
67 /* */ |
|
68 /* <Description> */ |
|
69 /* A structure used to model an SFNT `name' table entry. */ |
|
70 /* */ |
|
71 /* <Fields> */ |
|
72 /* platform_id :: The platform ID for `string'. */ |
|
73 /* */ |
|
74 /* encoding_id :: The encoding ID for `string'. */ |
|
75 /* */ |
|
76 /* language_id :: The language ID for `string'. */ |
|
77 /* */ |
|
78 /* name_id :: An identifier for `string'. */ |
|
79 /* */ |
|
80 /* string :: The `name' string. Note that its format differs */ |
|
81 /* depending on the (platform,encoding) pair. It can */ |
|
82 /* be a Pascal String, a UTF-16 one, etc. */ |
|
83 /* */ |
|
84 /* Generally speaking, the string is not */ |
|
85 /* zero-terminated. Please refer to the TrueType */ |
|
86 /* specification for details. */ |
|
87 /* */ |
|
88 /* string_len :: The length of `string' in bytes. */ |
|
89 /* */ |
|
90 /* <Note> */ |
|
91 /* Possible values for `platform_id', `encoding_id', `language_id', */ |
|
92 /* and `name_id' are given in the file `ttnameid.h'. For details */ |
|
93 /* please refer to the TrueType or OpenType specification. */ |
|
94 /* */ |
|
95 /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ |
|
96 /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ |
|
97 /* */ |
|
98 typedef struct FT_SfntName_ |
|
99 { |
|
100 FT_UShort platform_id; |
|
101 FT_UShort encoding_id; |
|
102 FT_UShort language_id; |
|
103 FT_UShort name_id; |
|
104 |
|
105 FT_Byte* string; /* this string is *not* null-terminated! */ |
|
106 FT_UInt string_len; /* in bytes */ |
|
107 |
|
108 } FT_SfntName; |
|
109 |
|
110 |
|
111 /*************************************************************************/ |
|
112 /* */ |
|
113 /* <Function> */ |
|
114 /* FT_Get_Sfnt_Name_Count */ |
|
115 /* */ |
|
116 /* <Description> */ |
|
117 /* Retrieve the number of name strings in the SFNT `name' table. */ |
|
118 /* */ |
|
119 /* <Input> */ |
|
120 /* face :: A handle to the source face. */ |
|
121 /* */ |
|
122 /* <Return> */ |
|
123 /* The number of strings in the `name' table. */ |
|
124 /* */ |
|
125 FT_EXPORT( FT_UInt ) |
|
126 FT_Get_Sfnt_Name_Count( FT_Face face ); |
|
127 |
|
128 |
|
129 /*************************************************************************/ |
|
130 /* */ |
|
131 /* <Function> */ |
|
132 /* FT_Get_Sfnt_Name */ |
|
133 /* */ |
|
134 /* <Description> */ |
|
135 /* Retrieve a string of the SFNT `name' table for a given index. */ |
|
136 /* */ |
|
137 /* <Input> */ |
|
138 /* face :: A handle to the source face. */ |
|
139 /* */ |
|
140 /* idx :: The index of the `name' string. */ |
|
141 /* */ |
|
142 /* <Output> */ |
|
143 /* aname :: The indexed @FT_SfntName structure. */ |
|
144 /* */ |
|
145 /* <Return> */ |
|
146 /* FreeType error code. 0~means success. */ |
|
147 /* */ |
|
148 /* <Note> */ |
|
149 /* The `string' array returned in the `aname' structure is not */ |
|
150 /* null-terminated. The application should deallocate it if it is no */ |
|
151 /* longer in use. */ |
|
152 /* */ |
|
153 /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ |
|
154 /* `name' table entries, then do a loop until you get the right */ |
|
155 /* platform, encoding, and name ID. */ |
|
156 /* */ |
|
157 FT_EXPORT( FT_Error ) |
|
158 FT_Get_Sfnt_Name( FT_Face face, |
|
159 FT_UInt idx, |
|
160 FT_SfntName *aname ); |
|
161 |
|
162 |
|
163 /*************************************************************************** |
|
164 * |
|
165 * @constant: |
|
166 * FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY |
|
167 * |
|
168 * @description: |
|
169 * A constant used as the tag of @FT_Parameter structures to make |
|
170 * FT_Open_Face() ignore preferred family subfamily names in `name' |
|
171 * table since OpenType version 1.4. For backwards compatibility with |
|
172 * legacy systems which has 4-face-per-family restriction. |
|
173 * |
|
174 */ |
|
175 #define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' ) |
|
176 |
|
177 |
|
178 /*************************************************************************** |
|
179 * |
|
180 * @constant: |
|
181 * FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY |
|
182 * |
|
183 * @description: |
|
184 * A constant used as the tag of @FT_Parameter structures to make |
|
185 * FT_Open_Face() ignore preferred subfamily names in `name' table since |
|
186 * OpenType version 1.4. For backwards compatibility with legacy |
|
187 * systems which has 4-face-per-family restriction. |
|
188 * |
|
189 */ |
|
190 #define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' ) |
|
191 |
|
192 /* */ |
|
193 |
|
194 |
|
195 FT_END_HEADER |
|
196 |
|
197 #endif /* __FT_SFNT_NAMES_H__ */ |
|
198 |
|
199 |
|
200 /* END */ |
|