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