zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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-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 
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  {
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 )
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  /* */
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 
196 
197 #endif /* __FT_SFNT_NAMES_H__ */
198 
199 
200 /* END */
int FT_Error
Definition: fttypes.h:296
FT_Byte * string
Definition: ftsnames.h:105
#define FT_END_HEADER
Definition: ftheader.h:54
unsigned char FT_Byte
Definition: fttypes.h:150
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_UInt string_len
Definition: ftsnames.h:106
FT_UShort encoding_id
Definition: ftsnames.h:101
FT_UInt idx
Definition: cffcmap.c:125
GLenum face
Definition: gl2ext.h:1490
FT_Get_Sfnt_Name(FT_Face face, FT_UInt idx, FT_SfntName *aname)
FT_UShort language_id
Definition: ftsnames.h:102
FT_BEGIN_HEADER struct FT_SfntName_ FT_SfntName
unsigned int FT_UInt
Definition: fttypes.h:227
#define FT_EXPORT(x)
Definition: ftconfig.h:500
FT_UShort platform_id
Definition: ftsnames.h:100
FT_Get_Sfnt_Name_Count(FT_Face face)
unsigned short FT_UShort
Definition: fttypes.h:205
FT_UShort name_id
Definition: ftsnames.h:103