]>
Commit | Line | Data |
---|---|---|
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 */ |