Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4759 | right-hear | 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 |
||
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 | /* |
||
42 | /* sfnt_names */ |
||
43 | /* */ |
||
44 | /* |
||
45 | /* SFNT Names */ |
||
46 | /* */ |
||
47 | /* |
||
48 | /* Access the names embedded in TrueType and OpenType files. */ |
||
49 | /* */ |
||
50 | /* |
||
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 | /* |
||
66 | /* FT_SfntName */ |
||
67 | /* */ |
||
68 | /* |
||
69 | /* A structure used to model an SFNT `name' table entry. */ |
||
70 | /* */ |
||
71 | /* |
||
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 | /* |
||
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 | /* |
||
114 | /* FT_Get_Sfnt_Name_Count */ |
||
115 | /* */ |
||
116 | /* |
||
117 | /* Retrieve the number of name strings in the SFNT `name' table. */ |
||
118 | /* */ |
||
119 | /* */ |
||
120 | /* face :: A handle to the source face. */ |
||
121 | /* */ |
||
122 | /* |
||
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 | /* |
||
132 | /* FT_Get_Sfnt_Name */ |
||
133 | /* */ |
||
134 | /* |
||
135 | /* Retrieve a string of the SFNT `name' table for a given index. */ |
||
136 | /* */ |
||
137 | /* */ |
||
138 | /* face :: A handle to the source face. */ |
||
139 | /* */ |
||
140 | /* idx :: The index of the `name' string. */ |
||
141 | /* */ |
||
142 | /* |
||
143 | /* aname :: The indexed @FT_SfntName structure. */ |
||
144 | /* */ |
||
145 | /* |
||
146 | /* FreeType error code. 0~means success. */ |
||
147 | /* */ |
||
148 | /* |
||
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 */ |