zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ftmm.h
Go to the documentation of this file.
1 /***************************************************************************/
2 /* */
3 /* ftmm.h */
4 /* */
5 /* FreeType Multiple Master font interface (specification). */
6 /* */
7 /* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */
9 /* */
10 /* This file is part of the FreeType project, and may only be used, */
11 /* modified, and distributed under the terms of the FreeType project */
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13 /* this file you indicate that you have read the license and */
14 /* understand and accept it fully. */
15 /* */
16 /***************************************************************************/
17 
18 
19 #ifndef __FTMM_H__
20 #define __FTMM_H__
21 
22 
23 #include <ft2build.h>
24 #include FT_TYPE1_TABLES_H
25 
26 
28 
29 
30  /*************************************************************************/
31  /* */
32  /* <Section> */
33  /* multiple_masters */
34  /* */
35  /* <Title> */
36  /* Multiple Masters */
37  /* */
38  /* <Abstract> */
39  /* How to manage Multiple Masters fonts. */
40  /* */
41  /* <Description> */
42  /* The following types and functions are used to manage Multiple */
43  /* Master fonts, i.e., the selection of specific design instances by */
44  /* setting design axis coordinates. */
45  /* */
46  /* George Williams has extended this interface to make it work with */
47  /* both Type~1 Multiple Masters fonts and GX distortable (var) */
48  /* fonts. Some of these routines only work with MM fonts, others */
49  /* will work with both types. They are similar enough that a */
50  /* consistent interface makes sense. */
51  /* */
52  /*************************************************************************/
53 
54 
55  /*************************************************************************/
56  /* */
57  /* <Struct> */
58  /* FT_MM_Axis */
59  /* */
60  /* <Description> */
61  /* A simple structure used to model a given axis in design space for */
62  /* Multiple Masters fonts. */
63  /* */
64  /* This structure can't be used for GX var fonts. */
65  /* */
66  /* <Fields> */
67  /* name :: The axis's name. */
68  /* */
69  /* minimum :: The axis's minimum design coordinate. */
70  /* */
71  /* maximum :: The axis's maximum design coordinate. */
72  /* */
73  typedef struct FT_MM_Axis_
74  {
78 
79  } FT_MM_Axis;
80 
81 
82  /*************************************************************************/
83  /* */
84  /* <Struct> */
85  /* FT_Multi_Master */
86  /* */
87  /* <Description> */
88  /* A structure used to model the axes and space of a Multiple Masters */
89  /* font. */
90  /* */
91  /* This structure can't be used for GX var fonts. */
92  /* */
93  /* <Fields> */
94  /* num_axis :: Number of axes. Cannot exceed~4. */
95  /* */
96  /* num_designs :: Number of designs; should be normally 2^num_axis */
97  /* even though the Type~1 specification strangely */
98  /* allows for intermediate designs to be present. This */
99  /* number cannot exceed~16. */
100  /* */
101  /* axis :: A table of axis descriptors. */
102  /* */
103  typedef struct FT_Multi_Master_
104  {
108 
109  } FT_Multi_Master;
110 
111 
112  /*************************************************************************/
113  /* */
114  /* <Struct> */
115  /* FT_Var_Axis */
116  /* */
117  /* <Description> */
118  /* A simple structure used to model a given axis in design space for */
119  /* Multiple Masters and GX var fonts. */
120  /* */
121  /* <Fields> */
122  /* name :: The axis's name. */
123  /* Not always meaningful for GX. */
124  /* */
125  /* minimum :: The axis's minimum design coordinate. */
126  /* */
127  /* def :: The axis's default design coordinate. */
128  /* FreeType computes meaningful default values for MM; it */
129  /* is then an integer value, not in 16.16 format. */
130  /* */
131  /* maximum :: The axis's maximum design coordinate. */
132  /* */
133  /* tag :: The axis's tag (the GX equivalent to `name'). */
134  /* FreeType provides default values for MM if possible. */
135  /* */
136  /* strid :: The entry in `name' table (another GX version of */
137  /* `name'). */
138  /* Not meaningful for MM. */
139  /* */
140  typedef struct FT_Var_Axis_
141  {
143 
147 
150 
151  } FT_Var_Axis;
152 
153 
154  /*************************************************************************/
155  /* */
156  /* <Struct> */
157  /* FT_Var_Named_Style */
158  /* */
159  /* <Description> */
160  /* A simple structure used to model a named style in a GX var font. */
161  /* */
162  /* This structure can't be used for MM fonts. */
163  /* */
164  /* <Fields> */
165  /* coords :: The design coordinates for this style. */
166  /* This is an array with one entry for each axis. */
167  /* */
168  /* strid :: The entry in `name' table identifying this style. */
169  /* */
170  typedef struct FT_Var_Named_Style_
171  {
174 
176 
177 
178  /*************************************************************************/
179  /* */
180  /* <Struct> */
181  /* FT_MM_Var */
182  /* */
183  /* <Description> */
184  /* A structure used to model the axes and space of a Multiple Masters */
185  /* or GX var distortable font. */
186  /* */
187  /* Some fields are specific to one format and not to the other. */
188  /* */
189  /* <Fields> */
190  /* num_axis :: The number of axes. The maximum value is~4 for */
191  /* MM; no limit in GX. */
192  /* */
193  /* num_designs :: The number of designs; should be normally */
194  /* 2^num_axis for MM fonts. Not meaningful for GX */
195  /* (where every glyph could have a different */
196  /* number of designs). */
197  /* */
198  /* num_namedstyles :: The number of named styles; only meaningful for */
199  /* GX which allows certain design coordinates to */
200  /* have a string ID (in the `name' table) */
201  /* associated with them. The font can tell the */
202  /* user that, for example, Weight=1.5 is `Bold'. */
203  /* */
204  /* axis :: A table of axis descriptors. */
205  /* GX fonts contain slightly more data than MM. */
206  /* */
207  /* namedstyles :: A table of named styles. */
208  /* Only meaningful with GX. */
209  /* */
210  typedef struct FT_MM_Var_
211  {
217 
218  } FT_MM_Var;
219 
220 
221  /* */
222 
223 
224  /*************************************************************************/
225  /* */
226  /* <Function> */
227  /* FT_Get_Multi_Master */
228  /* */
229  /* <Description> */
230  /* Retrieve the Multiple Master descriptor of a given font. */
231  /* */
232  /* This function can't be used with GX fonts. */
233  /* */
234  /* <Input> */
235  /* face :: A handle to the source face. */
236  /* */
237  /* <Output> */
238  /* amaster :: The Multiple Masters descriptor. */
239  /* */
240  /* <Return> */
241  /* FreeType error code. 0~means success. */
242  /* */
245  FT_Multi_Master *amaster );
246 
247 
248  /*************************************************************************/
249  /* */
250  /* <Function> */
251  /* FT_Get_MM_Var */
252  /* */
253  /* <Description> */
254  /* Retrieve the Multiple Master/GX var descriptor of a given font. */
255  /* */
256  /* <Input> */
257  /* face :: A handle to the source face. */
258  /* */
259  /* <Output> */
260  /* amaster :: The Multiple Masters/GX var descriptor. */
261  /* Allocates a data structure, which the user must free */
262  /* (a single call to FT_FREE will do it). */
263  /* */
264  /* <Return> */
265  /* FreeType error code. 0~means success. */
266  /* */
268  FT_Get_MM_Var( FT_Face face,
269  FT_MM_Var* *amaster );
270 
271 
272  /*************************************************************************/
273  /* */
274  /* <Function> */
275  /* FT_Set_MM_Design_Coordinates */
276  /* */
277  /* <Description> */
278  /* For Multiple Masters fonts, choose an interpolated font design */
279  /* through design coordinates. */
280  /* */
281  /* This function can't be used with GX fonts. */
282  /* */
283  /* <InOut> */
284  /* face :: A handle to the source face. */
285  /* */
286  /* <Input> */
287  /* num_coords :: The number of design coordinates (must be equal to */
288  /* the number of axes in the font). */
289  /* */
290  /* coords :: An array of design coordinates. */
291  /* */
292  /* <Return> */
293  /* FreeType error code. 0~means success. */
294  /* */
297  FT_UInt num_coords,
298  FT_Long* coords );
299 
300 
301  /*************************************************************************/
302  /* */
303  /* <Function> */
304  /* FT_Set_Var_Design_Coordinates */
305  /* */
306  /* <Description> */
307  /* For Multiple Master or GX Var fonts, choose an interpolated font */
308  /* design through design coordinates. */
309  /* */
310  /* <InOut> */
311  /* face :: A handle to the source face. */
312  /* */
313  /* <Input> */
314  /* num_coords :: The number of design coordinates (must be equal to */
315  /* the number of axes in the font). */
316  /* */
317  /* coords :: An array of design coordinates. */
318  /* */
319  /* <Return> */
320  /* FreeType error code. 0~means success. */
321  /* */
324  FT_UInt num_coords,
325  FT_Fixed* coords );
326 
327 
328  /*************************************************************************/
329  /* */
330  /* <Function> */
331  /* FT_Set_MM_Blend_Coordinates */
332  /* */
333  /* <Description> */
334  /* For Multiple Masters and GX var fonts, choose an interpolated font */
335  /* design through normalized blend coordinates. */
336  /* */
337  /* <InOut> */
338  /* face :: A handle to the source face. */
339  /* */
340  /* <Input> */
341  /* num_coords :: The number of design coordinates (must be equal to */
342  /* the number of axes in the font). */
343  /* */
344  /* coords :: The design coordinates array (each element must be */
345  /* between 0 and 1.0). */
346  /* */
347  /* <Return> */
348  /* FreeType error code. 0~means success. */
349  /* */
352  FT_UInt num_coords,
353  FT_Fixed* coords );
354 
355 
356  /*************************************************************************/
357  /* */
358  /* <Function> */
359  /* FT_Set_Var_Blend_Coordinates */
360  /* */
361  /* <Description> */
362  /* This is another name of @FT_Set_MM_Blend_Coordinates. */
363  /* */
366  FT_UInt num_coords,
367  FT_Fixed* coords );
368 
369 
370  /* */
371 
372 
374 
375 #endif /* __FTMM_H__ */
376 
377 
378 /* END */
FT_String * name
Definition: ftmm.h:142
FT_Fixed * coords
Definition: ftmm.h:172
int FT_Error
Definition: fttypes.h:296
FT_Set_MM_Design_Coordinates(FT_Face face, FT_UInt num_coords, FT_Long *coords)
Definition: ftmm.c:110
signed long FT_Long
Definition: fttypes.h:238
FT_String * name
Definition: ftmm.h:75
unsigned long FT_ULong
Definition: fttypes.h:249
#define FT_END_HEADER
Definition: ftheader.h:54
FT_MM_Axis axis[T1_MAX_MM_AXIS]
Definition: ftmm.h:107
FT_UInt num_namedstyles
Definition: ftmm.h:214
GLenum GLuint coords
Definition: glew.h:7189
FT_Fixed minimum
Definition: ftmm.h:144
FT_BEGIN_HEADER struct FT_MM_Axis_ FT_MM_Axis
FT_Fixed maximum
Definition: ftmm.h:146
FT_Var_Axis * axis
Definition: ftmm.h:215
FT_UInt num_axis
Definition: ftmm.h:212
#define FT_BEGIN_HEADER
Definition: ftheader.h:36
FT_UInt num_designs
Definition: ftmm.h:213
struct FT_MM_Var_ FT_MM_Var
struct FT_Var_Named_Style_ FT_Var_Named_Style
FT_ULong tag
Definition: ftmm.h:148
char FT_String
Definition: fttypes.h:183
GLenum face
Definition: gl2ext.h:1490
FT_Long minimum
Definition: ftmm.h:76
FT_Set_Var_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
Definition: ftmm.c:182
FT_Set_MM_Blend_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
Definition: ftmm.c:156
struct FT_Multi_Master_ FT_Multi_Master
FT_Get_Multi_Master(FT_Face face, FT_Multi_Master *amaster)
Definition: ftmm.c:66
signed long FT_Fixed
Definition: fttypes.h:284
unsigned int FT_UInt
Definition: fttypes.h:227
#define FT_EXPORT(x)
Definition: ftconfig.h:500
FT_Long maximum
Definition: ftmm.h:77
FT_Get_MM_Var(FT_Face face, FT_MM_Var **amaster)
Definition: ftmm.c:88
FT_UInt num_axis
Definition: ftmm.h:105
FT_Set_Var_Design_Coordinates(FT_Face face, FT_UInt num_coords, FT_Fixed *coords)
Definition: ftmm.c:133
FT_Fixed def
Definition: ftmm.h:145
FT_UInt strid
Definition: ftmm.h:173
FT_UInt strid
Definition: ftmm.h:149
FT_Var_Named_Style * namedstyle
Definition: ftmm.h:216
FT_UInt num_designs
Definition: ftmm.h:106
struct FT_Var_Axis_ FT_Var_Axis
#define T1_MAX_MM_AXIS
Definition: t1tables.h:243