ReactOS  0.4.15-dev-2534-geba00d1
ftsnames.h
Go to the documentation of this file.
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-2018 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 FTSNAMES_H_
23 #define FTSNAMES_H_
24 
25 
26 #include <ft2build.h>
27 #include FT_FREETYPE_H
28 #include FT_PARAMETER_TAGS_H
29 
30 #ifdef FREETYPE_H
31 #error "freetype.h of FreeType 1 has been loaded!"
32 #error "Please fix the directory search order for header files"
33 #error "so that freetype.h of FreeType 2 is found first."
34 #endif
35 
36 
38 
39 
40  /*************************************************************************/
41  /* */
42  /* <Section> */
43  /* sfnt_names */
44  /* */
45  /* <Title> */
46  /* SFNT Names */
47  /* */
48  /* <Abstract> */
49  /* Access the names embedded in TrueType and OpenType files. */
50  /* */
51  /* <Description> */
52  /* The TrueType and OpenType specifications allow the inclusion of */
53  /* a special names table (`name') in font files. This table contains */
54  /* textual (and internationalized) information regarding the font, */
55  /* like family name, copyright, version, etc. */
56  /* */
57  /* The definitions below are used to access them if available. */
58  /* */
59  /* Note that this has nothing to do with glyph names! */
60  /* */
61  /*************************************************************************/
62 
63 
64  /*************************************************************************/
65  /* */
66  /* <Struct> */
67  /* FT_SfntName */
68  /* */
69  /* <Description> */
70  /* A structure used to model an SFNT `name' table entry. */
71  /* */
72  /* <Fields> */
73  /* platform_id :: The platform ID for `string'. */
74  /* See @TT_PLATFORM_XXX for possible values. */
75  /* */
76  /* encoding_id :: The encoding ID for `string'. */
77  /* See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */
78  /* @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX */
79  /* for possible values. */
80  /* */
81  /* language_id :: The language ID for `string'. */
82  /* See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for */
83  /* possible values. */
84  /* */
85  /* Registered OpenType values for `language_id' are */
86  /* always smaller than 0x8000; values equal or larger */
87  /* than 0x8000 usually indicate a language tag string */
88  /* (introduced in OpenType version 1.6). Use function */
89  /* @FT_Get_Sfnt_LangTag with `language_id' as its */
90  /* argument to retrieve the associated language tag. */
91  /* */
92  /* name_id :: An identifier for `string'. */
93  /* See @TT_NAME_ID_XXX for possible values. */
94  /* */
95  /* string :: The `name' string. Note that its format differs */
96  /* depending on the (platform,encoding) pair, being */
97  /* either a string of bytes (without a terminating */
98  /* NULL byte) or containing UTF-16BE entities. */
99  /* */
100  /* string_len :: The length of `string' in bytes. */
101  /* */
102  /* <Note> */
103  /* Please refer to the TrueType or OpenType specification for more */
104  /* details. */
105  /* */
106  typedef struct FT_SfntName_
107  {
112 
113  FT_Byte* string; /* this string is *not* null-terminated! */
114  FT_UInt string_len; /* in bytes */
115 
116  } FT_SfntName;
117 
118 
119  /*************************************************************************/
120  /* */
121  /* <Function> */
122  /* FT_Get_Sfnt_Name_Count */
123  /* */
124  /* <Description> */
125  /* Retrieve the number of name strings in the SFNT `name' table. */
126  /* */
127  /* <Input> */
128  /* face :: A handle to the source face. */
129  /* */
130  /* <Return> */
131  /* The number of strings in the `name' table. */
132  /* */
133  FT_EXPORT( FT_UInt )
135 
136 
137  /*************************************************************************/
138  /* */
139  /* <Function> */
140  /* FT_Get_Sfnt_Name */
141  /* */
142  /* <Description> */
143  /* Retrieve a string of the SFNT `name' table for a given index. */
144  /* */
145  /* <Input> */
146  /* face :: A handle to the source face. */
147  /* */
148  /* idx :: The index of the `name' string. */
149  /* */
150  /* <Output> */
151  /* aname :: The indexed @FT_SfntName structure. */
152  /* */
153  /* <Return> */
154  /* FreeType error code. 0~means success. */
155  /* */
156  /* <Note> */
157  /* The `string' array returned in the `aname' structure is not */
158  /* null-terminated. Note that you don't have to deallocate `string' */
159  /* by yourself; FreeType takes care of it if you call @FT_Done_Face. */
160  /* */
161  /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */
162  /* `name' table entries, then do a loop until you get the right */
163  /* platform, encoding, and name ID. */
164  /* */
165  /* `name' table format~1 entries can use language tags also, see */
166  /* @FT_Get_Sfnt_LangTag. */
167  /* */
170  FT_UInt idx,
171  FT_SfntName *aname );
172 
173 
174  /*************************************************************************/
175  /* */
176  /* <Struct> */
177  /* FT_SfntLangTag */
178  /* */
179  /* <Description> */
180  /* A structure to model a language tag entry from an SFNT `name' */
181  /* table. */
182  /* */
183  /* <Fields> */
184  /* string :: The language tag string, encoded in UTF-16BE */
185  /* (without trailing NULL bytes). */
186  /* */
187  /* string_len :: The length of `string' in *bytes*. */
188  /* */
189  /* <Note> */
190  /* Please refer to the TrueType or OpenType specification for more */
191  /* details. */
192  /* */
193  /* <Since> */
194  /* 2.8 */
195  /* */
196  typedef struct FT_SfntLangTag_
197  {
198  FT_Byte* string; /* this string is *not* null-terminated! */
199  FT_UInt string_len; /* in bytes */
200 
201  } FT_SfntLangTag;
202 
203 
204  /*************************************************************************/
205  /* */
206  /* <Function> */
207  /* FT_Get_Sfnt_LangTag */
208  /* */
209  /* <Description> */
210  /* Retrieve the language tag associated with a language ID of an SFNT */
211  /* `name' table entry. */
212  /* */
213  /* <Input> */
214  /* face :: A handle to the source face. */
215  /* */
216  /* langID :: The language ID, as returned by @FT_Get_Sfnt_Name. */
217  /* This is always a value larger than 0x8000. */
218  /* */
219  /* <Output> */
220  /* alangTag :: The language tag associated with the `name' table */
221  /* entry's language ID. */
222  /* */
223  /* <Return> */
224  /* FreeType error code. 0~means success. */
225  /* */
226  /* <Note> */
227  /* The `string' array returned in the `alangTag' structure is not */
228  /* null-terminated. Note that you don't have to deallocate `string' */
229  /* by yourself; FreeType takes care of it if you call @FT_Done_Face. */
230  /* */
231  /* Only `name' table format~1 supports language tags. For format~0 */
232  /* tables, this function always returns FT_Err_Invalid_Table. For */
233  /* invalid format~1 language ID values, FT_Err_Invalid_Argument is */
234  /* returned. */
235  /* */
236  /* <Since> */
237  /* 2.8 */
238  /* */
241  FT_UInt langID,
242  FT_SfntLangTag *alangTag );
243 
244 
245  /* */
246 
247 
249 
250 #endif /* FTSNAMES_H_ */
251 
252 
253 /* END */
int FT_Error
Definition: fttypes.h:300
#define FT_END_HEADER
Definition: ftheader.h:54
FT_UShort encoding_id
Definition: ftsnames.h:109
FT_UShort name_id
Definition: ftsnames.h:111
FT_UInt string_len
Definition: ftsnames.h:199
unsigned char FT_Byte
Definition: fttypes.h:154
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
unsigned int idx
Definition: utils.c:41
FT_UShort language_id
Definition: ftsnames.h:110
FT_UShort platform_id
Definition: ftsnames.h:108
FT_Byte * string
Definition: ftsnames.h:113
struct FT_SfntLangTag_ FT_SfntLangTag
FT_Byte * string
Definition: ftsnames.h:198
FT_Get_Sfnt_Name(FT_Face face, FT_UInt idx, FT_SfntName *aname)
FT_BEGIN_HEADER struct FT_SfntName_ FT_SfntName
FT_UInt string_len
Definition: ftsnames.h:114
unsigned int FT_UInt
Definition: fttypes.h:231
#define FT_EXPORT(x)
Definition: ftconfig.h:461
FT_Get_Sfnt_Name_Count(FT_Face face)
unsigned short FT_UShort
Definition: fttypes.h:209
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
FT_Get_Sfnt_LangTag(FT_Face face, FT_UInt langID, FT_SfntLangTag *alangTag)