| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 /***************************************************************************/ |  | 
| 2 /*                                                                         */ |  | 
| 3 /*  ftmm.h                                                                 */ |  | 
| 4 /*                                                                         */ |  | 
| 5 /*    FreeType Multiple Master font interface (specification).             */ |  | 
| 6 /*                                                                         */ |  | 
| 7 /*  Copyright 1996-2001, 2003, 2004, 2006, 2009, 2013 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 |  | 
| 27 FT_BEGIN_HEADER |  | 
| 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   { |  | 
| 75     FT_String*  name; |  | 
| 76     FT_Long     minimum; |  | 
| 77     FT_Long     maximum; |  | 
| 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   { |  | 
| 105     FT_UInt     num_axis; |  | 
| 106     FT_UInt     num_designs; |  | 
| 107     FT_MM_Axis  axis[T1_MAX_MM_AXIS]; |  | 
| 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   { |  | 
| 142     FT_String*  name; |  | 
| 143 |  | 
| 144     FT_Fixed    minimum; |  | 
| 145     FT_Fixed    def; |  | 
| 146     FT_Fixed    maximum; |  | 
| 147 |  | 
| 148     FT_ULong    tag; |  | 
| 149     FT_UInt     strid; |  | 
| 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   { |  | 
| 172     FT_Fixed*  coords; |  | 
| 173     FT_UInt    strid; |  | 
| 174 |  | 
| 175   } FT_Var_Named_Style; |  | 
| 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 that 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   { |  | 
| 212     FT_UInt              num_axis; |  | 
| 213     FT_UInt              num_designs; |  | 
| 214     FT_UInt              num_namedstyles; |  | 
| 215     FT_Var_Axis*         axis; |  | 
| 216     FT_Var_Named_Style*  namedstyle; |  | 
| 217 |  | 
| 218   } FT_MM_Var; |  | 
| 219 |  | 
| 220 |  | 
| 221   /*************************************************************************/ |  | 
| 222   /*                                                                       */ |  | 
| 223   /* <Function>                                                            */ |  | 
| 224   /*    FT_Get_Multi_Master                                                */ |  | 
| 225   /*                                                                       */ |  | 
| 226   /* <Description>                                                         */ |  | 
| 227   /*    Retrieve the Multiple Master descriptor of a given font.           */ |  | 
| 228   /*                                                                       */ |  | 
| 229   /*    This function can't be used with GX fonts.                         */ |  | 
| 230   /*                                                                       */ |  | 
| 231   /* <Input>                                                               */ |  | 
| 232   /*    face    :: A handle to the source face.                            */ |  | 
| 233   /*                                                                       */ |  | 
| 234   /* <Output>                                                              */ |  | 
| 235   /*    amaster :: The Multiple Masters descriptor.                        */ |  | 
| 236   /*                                                                       */ |  | 
| 237   /* <Return>                                                              */ |  | 
| 238   /*    FreeType error code.  0~means success.                             */ |  | 
| 239   /*                                                                       */ |  | 
| 240   FT_EXPORT( FT_Error ) |  | 
| 241   FT_Get_Multi_Master( FT_Face           face, |  | 
| 242                        FT_Multi_Master  *amaster ); |  | 
| 243 |  | 
| 244 |  | 
| 245   /*************************************************************************/ |  | 
| 246   /*                                                                       */ |  | 
| 247   /* <Function>                                                            */ |  | 
| 248   /*    FT_Get_MM_Var                                                      */ |  | 
| 249   /*                                                                       */ |  | 
| 250   /* <Description>                                                         */ |  | 
| 251   /*    Retrieve the Multiple Master/GX var descriptor of a given font.    */ |  | 
| 252   /*                                                                       */ |  | 
| 253   /* <Input>                                                               */ |  | 
| 254   /*    face    :: A handle to the source face.                            */ |  | 
| 255   /*                                                                       */ |  | 
| 256   /* <Output>                                                              */ |  | 
| 257   /*    amaster :: The Multiple Masters/GX var descriptor.                 */ |  | 
| 258   /*               Allocates a data structure, which the user must free.   */ |  | 
| 259   /*                                                                       */ |  | 
| 260   /* <Return>                                                              */ |  | 
| 261   /*    FreeType error code.  0~means success.                             */ |  | 
| 262   /*                                                                       */ |  | 
| 263   FT_EXPORT( FT_Error ) |  | 
| 264   FT_Get_MM_Var( FT_Face      face, |  | 
| 265                  FT_MM_Var*  *amaster ); |  | 
| 266 |  | 
| 267 |  | 
| 268   /*************************************************************************/ |  | 
| 269   /*                                                                       */ |  | 
| 270   /* <Function>                                                            */ |  | 
| 271   /*    FT_Set_MM_Design_Coordinates                                       */ |  | 
| 272   /*                                                                       */ |  | 
| 273   /* <Description>                                                         */ |  | 
| 274   /*    For Multiple Masters fonts, choose an interpolated font design     */ |  | 
| 275   /*    through design coordinates.                                        */ |  | 
| 276   /*                                                                       */ |  | 
| 277   /*    This function can't be used with GX fonts.                         */ |  | 
| 278   /*                                                                       */ |  | 
| 279   /* <InOut>                                                               */ |  | 
| 280   /*    face       :: A handle to the source face.                         */ |  | 
| 281   /*                                                                       */ |  | 
| 282   /* <Input>                                                               */ |  | 
| 283   /*    num_coords :: The number of design coordinates (must be equal to   */ |  | 
| 284   /*                  the number of axes in the font).                     */ |  | 
| 285   /*                                                                       */ |  | 
| 286   /*    coords     :: An array of design coordinates.                      */ |  | 
| 287   /*                                                                       */ |  | 
| 288   /* <Return>                                                              */ |  | 
| 289   /*    FreeType error code.  0~means success.                             */ |  | 
| 290   /*                                                                       */ |  | 
| 291   FT_EXPORT( FT_Error ) |  | 
| 292   FT_Set_MM_Design_Coordinates( FT_Face   face, |  | 
| 293                                 FT_UInt   num_coords, |  | 
| 294                                 FT_Long*  coords ); |  | 
| 295 |  | 
| 296 |  | 
| 297   /*************************************************************************/ |  | 
| 298   /*                                                                       */ |  | 
| 299   /* <Function>                                                            */ |  | 
| 300   /*    FT_Set_Var_Design_Coordinates                                      */ |  | 
| 301   /*                                                                       */ |  | 
| 302   /* <Description>                                                         */ |  | 
| 303   /*    For Multiple Master or GX Var fonts, choose an interpolated font   */ |  | 
| 304   /*    design through design coordinates.                                 */ |  | 
| 305   /*                                                                       */ |  | 
| 306   /* <InOut>                                                               */ |  | 
| 307   /*    face       :: A handle to the source face.                         */ |  | 
| 308   /*                                                                       */ |  | 
| 309   /* <Input>                                                               */ |  | 
| 310   /*    num_coords :: The number of design coordinates (must be equal to   */ |  | 
| 311   /*                  the number of axes in the font).                     */ |  | 
| 312   /*                                                                       */ |  | 
| 313   /*    coords     :: An array of design coordinates.                      */ |  | 
| 314   /*                                                                       */ |  | 
| 315   /* <Return>                                                              */ |  | 
| 316   /*    FreeType error code.  0~means success.                             */ |  | 
| 317   /*                                                                       */ |  | 
| 318   FT_EXPORT( FT_Error ) |  | 
| 319   FT_Set_Var_Design_Coordinates( FT_Face    face, |  | 
| 320                                  FT_UInt    num_coords, |  | 
| 321                                  FT_Fixed*  coords ); |  | 
| 322 |  | 
| 323 |  | 
| 324   /*************************************************************************/ |  | 
| 325   /*                                                                       */ |  | 
| 326   /* <Function>                                                            */ |  | 
| 327   /*    FT_Set_MM_Blend_Coordinates                                        */ |  | 
| 328   /*                                                                       */ |  | 
| 329   /* <Description>                                                         */ |  | 
| 330   /*    For Multiple Masters and GX var fonts, choose an interpolated font */ |  | 
| 331   /*    design through normalized blend coordinates.                       */ |  | 
| 332   /*                                                                       */ |  | 
| 333   /* <InOut>                                                               */ |  | 
| 334   /*    face       :: A handle to the source face.                         */ |  | 
| 335   /*                                                                       */ |  | 
| 336   /* <Input>                                                               */ |  | 
| 337   /*    num_coords :: The number of design coordinates (must be equal to   */ |  | 
| 338   /*                  the number of axes in the font).                     */ |  | 
| 339   /*                                                                       */ |  | 
| 340   /*    coords     :: The design coordinates array (each element must be   */ |  | 
| 341   /*                  between 0 and 1.0).                                  */ |  | 
| 342   /*                                                                       */ |  | 
| 343   /* <Return>                                                              */ |  | 
| 344   /*    FreeType error code.  0~means success.                             */ |  | 
| 345   /*                                                                       */ |  | 
| 346   FT_EXPORT( FT_Error ) |  | 
| 347   FT_Set_MM_Blend_Coordinates( FT_Face    face, |  | 
| 348                                FT_UInt    num_coords, |  | 
| 349                                FT_Fixed*  coords ); |  | 
| 350 |  | 
| 351 |  | 
| 352   /*************************************************************************/ |  | 
| 353   /*                                                                       */ |  | 
| 354   /* <Function>                                                            */ |  | 
| 355   /*    FT_Set_Var_Blend_Coordinates                                       */ |  | 
| 356   /*                                                                       */ |  | 
| 357   /* <Description>                                                         */ |  | 
| 358   /*    This is another name of @FT_Set_MM_Blend_Coordinates.              */ |  | 
| 359   /*                                                                       */ |  | 
| 360   FT_EXPORT( FT_Error ) |  | 
| 361   FT_Set_Var_Blend_Coordinates( FT_Face    face, |  | 
| 362                                 FT_UInt    num_coords, |  | 
| 363                                 FT_Fixed*  coords ); |  | 
| 364 |  | 
| 365   /* */ |  | 
| 366 |  | 
| 367 |  | 
| 368 FT_END_HEADER |  | 
| 369 |  | 
| 370 #endif /* __FTMM_H__ */ |  | 
| 371 |  | 
| 372 |  | 
| 373 /* END */ |  | 
| OLD | NEW | 
|---|