ReactOS 0.4.15-dev-8102-g108db8f
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
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 /* */
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 /* */
197 {
198 FT_Byte* string; /* this string is *not* null-terminated! */
199 FT_UInt string_len; /* in bytes */
200
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 */
unsigned int idx
Definition: utils.c:41
#define FT_EXPORT(x)
Definition: ftconfig.h:461
#define FT_END_HEADER
Definition: ftheader.h:54
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_Get_Sfnt_Name_Count(FT_Face face)
struct FT_SfntLangTag_ FT_SfntLangTag
FT_BEGIN_HEADER struct FT_SfntName_ FT_SfntName
FT_Get_Sfnt_Name(FT_Face face, FT_UInt idx, FT_SfntName *aname)
FT_Get_Sfnt_LangTag(FT_Face face, FT_UInt langID, FT_SfntLangTag *alangTag)
unsigned char FT_Byte
Definition: fttypes.h:154
int FT_Error
Definition: fttypes.h:300
unsigned short FT_UShort
Definition: fttypes.h:209
unsigned int FT_UInt
Definition: fttypes.h:231
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
FT_Byte * string
Definition: ftsnames.h:198
FT_UInt string_len
Definition: ftsnames.h:199
FT_UShort encoding_id
Definition: ftsnames.h:109
FT_UInt string_len
Definition: ftsnames.h:114
FT_UShort language_id
Definition: ftsnames.h:110
FT_Byte * string
Definition: ftsnames.h:113
FT_UShort name_id
Definition: ftsnames.h:111
FT_UShort platform_id
Definition: ftsnames.h:108