1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  ftmm.h                                                                 */
   4 /*                                                                         */
   5 /*    FreeType Multiple Master font interface (specification).             */
   6 /*                                                                         */
   7 /*  Copyright 1996-2018 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   /*    Besides Adobe MM fonts, the interface supports Apple's TrueType GX */
  47   /*    and OpenType variation fonts.  Some of the routines only work with */
  48   /*    Adobe MM fonts, others will work with all three types.  They are   */
  49   /*    similar enough that a consistent interface makes sense.            */
  50   /*                                                                       */
  51   /*************************************************************************/
  52 
  53 
  54   /*************************************************************************/
  55   /*                                                                       */
  56   /* <Struct>                                                              */
  57   /*    FT_MM_Axis                                                         */
  58   /*                                                                       */
  59   /* <Description>                                                         */
  60   /*    A structure to model a given axis in design space for Multiple     */
  61   /*    Masters fonts.                                                     */
  62   /*                                                                       */
  63   /*    This structure can't be used for TrueType GX or OpenType variation */
  64   /*    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 to model the axes and space of a Multiple Masters      */
  89   /*    font.                                                              */
  90   /*                                                                       */
  91   /*    This structure can't be used for TrueType GX or OpenType variation */
  92   /*    fonts.                                                             */
  93   /*                                                                       */
  94   /* <Fields>                                                              */
  95   /*    num_axis    :: Number of axes.  Cannot exceed~4.                   */
  96   /*                                                                       */
  97   /*    num_designs :: Number of designs; should be normally 2^num_axis    */
  98   /*                   even though the Type~1 specification strangely      */
  99   /*                   allows for intermediate designs to be present.      */
 100   /*                   This number cannot exceed~16.                       */
 101   /*                                                                       */
 102   /*    axis        :: A table of axis descriptors.                        */
 103   /*                                                                       */
 104   typedef struct  FT_Multi_Master_
 105   {
 106     FT_UInt     num_axis;
 107     FT_UInt     num_designs;
 108     FT_MM_Axis  axis[T1_MAX_MM_AXIS];
 109 
 110   } FT_Multi_Master;
 111 
 112 
 113   /*************************************************************************/
 114   /*                                                                       */
 115   /* <Struct>                                                              */
 116   /*    FT_Var_Axis                                                        */
 117   /*                                                                       */
 118   /* <Description>                                                         */
 119   /*    A structure to model a given axis in design space for Multiple     */
 120   /*    Masters, TrueType GX, and OpenType variation fonts.                */
 121   /*                                                                       */
 122   /* <Fields>                                                              */
 123   /*    name    :: The axis's name.                                        */
 124   /*               Not always meaningful for TrueType GX or OpenType       */
 125   /*               variation fonts.                                        */
 126   /*                                                                       */
 127   /*    minimum :: The axis's minimum design coordinate.                   */
 128   /*                                                                       */
 129   /*    def     :: The axis's default design coordinate.                   */
 130   /*               FreeType computes meaningful default values for Adobe   */
 131   /*               MM fonts.                                               */
 132   /*                                                                       */
 133   /*    maximum :: The axis's maximum design coordinate.                   */
 134   /*                                                                       */
 135   /*    tag     :: The axis's tag (the equivalent to `name' for TrueType   */
 136   /*               GX and OpenType variation fonts).  FreeType provides    */
 137   /*               default values for Adobe MM fonts if possible.          */
 138   /*                                                                       */
 139   /*    strid   :: The axis name entry in the font's `name' table.  This   */
 140   /*               is another (and often better) version of the `name'     */
 141   /*               field for TrueType GX or OpenType variation fonts.  Not */
 142   /*               meaningful for Adobe MM fonts.                          */
 143   /*                                                                       */
 144   /* <Note>                                                                */
 145   /*    The fields `minimum', `def', and `maximum' are 16.16 fractional    */
 146   /*    values for TrueType GX and OpenType variation fonts.  For Adobe MM */
 147   /*    fonts, the values are integers.                                    */
 148   /*                                                                       */
 149   typedef struct  FT_Var_Axis_
 150   {
 151     FT_String*  name;
 152 
 153     FT_Fixed    minimum;
 154     FT_Fixed    def;
 155     FT_Fixed    maximum;
 156 
 157     FT_ULong    tag;
 158     FT_UInt     strid;
 159 
 160   } FT_Var_Axis;
 161 
 162 
 163   /*************************************************************************/
 164   /*                                                                       */
 165   /* <Struct>                                                              */
 166   /*    FT_Var_Named_Style                                                 */
 167   /*                                                                       */
 168   /* <Description>                                                         */
 169   /*    A structure to model a named instance in a TrueType GX or OpenType */
 170   /*    variation font.                                                    */
 171   /*                                                                       */
 172   /*    This structure can't be used for Adobe MM fonts.                   */
 173   /*                                                                       */
 174   /* <Fields>                                                              */
 175   /*    coords :: The design coordinates for this instance.                */
 176   /*              This is an array with one entry for each axis.           */
 177   /*                                                                       */
 178   /*    strid  :: The entry in `name' table identifying this instance.     */
 179   /*                                                                       */
 180   /*    psid   :: The entry in `name' table identifying a PostScript name  */
 181   /*              for this instance.  Value 0xFFFF indicates a missing     */
 182   /*              entry.                                                   */
 183   /*                                                                       */
 184   typedef struct  FT_Var_Named_Style_
 185   {
 186     FT_Fixed*  coords;
 187     FT_UInt    strid;
 188     FT_UInt    psid;   /* since 2.7.1 */
 189 
 190   } FT_Var_Named_Style;
 191 
 192 
 193   /*************************************************************************/
 194   /*                                                                       */
 195   /* <Struct>                                                              */
 196   /*    FT_MM_Var                                                          */
 197   /*                                                                       */
 198   /* <Description>                                                         */
 199   /*    A structure to model the axes and space of an Adobe MM, TrueType   */
 200   /*    GX, or OpenType variation font.                                    */
 201   /*                                                                       */
 202   /*    Some fields are specific to one format and not to the others.      */
 203   /*                                                                       */
 204   /* <Fields>                                                              */
 205   /*    num_axis        :: The number of axes.  The maximum value is~4 for */
 206   /*                       Adobe MM fonts; no limit in TrueType GX or      */
 207   /*                       OpenType variation fonts.                       */
 208   /*                                                                       */
 209   /*    num_designs     :: The number of designs; should be normally       */
 210   /*                       2^num_axis for Adobe MM fonts.  Not meaningful  */
 211   /*                       for TrueType GX or OpenType variation fonts     */
 212   /*                       (where every glyph could have a different       */
 213   /*                       number of designs).                             */
 214   /*                                                                       */
 215   /*    num_namedstyles :: The number of named styles; a `named style' is  */
 216   /*                       a tuple of design coordinates that has a string */
 217   /*                       ID (in the `name' table) associated with it.    */
 218   /*                       The font can tell the user that, for example,   */
 219   /*                       [Weight=1.5,Width=1.1] is `Bold'.  Another name */
 220   /*                       for `named style' is `named instance'.          */
 221   /*                                                                       */
 222   /*                       For Adobe Multiple Masters fonts, this value is */
 223   /*                       always zero because the format does not support */
 224   /*                       named styles.                                   */
 225   /*                                                                       */
 226   /*    axis            :: An axis descriptor table.                       */
 227   /*                       TrueType GX and OpenType variation fonts        */
 228   /*                       contain slightly more data than Adobe MM fonts. */
 229   /*                       Memory management of this pointer is done       */
 230   /*                       internally by FreeType.                         */
 231   /*                                                                       */
 232   /*    namedstyle      :: A named style (instance) table.                 */
 233   /*                       Only meaningful for TrueType GX and OpenType    */
 234   /*                       variation fonts.  Memory management of this     */
 235   /*                       pointer is done internally by FreeType.         */
 236   /*                                                                       */
 237   typedef struct  FT_MM_Var_
 238   {
 239     FT_UInt              num_axis;
 240     FT_UInt              num_designs;
 241     FT_UInt              num_namedstyles;
 242     FT_Var_Axis*         axis;
 243     FT_Var_Named_Style*  namedstyle;
 244 
 245   } FT_MM_Var;
 246 
 247 
 248   /*************************************************************************/
 249   /*                                                                       */
 250   /* <Function>                                                            */
 251   /*    FT_Get_Multi_Master                                                */
 252   /*                                                                       */
 253   /* <Description>                                                         */
 254   /*    Retrieve a variation descriptor of a given Adobe MM font.          */
 255   /*                                                                       */
 256   /*    This function can't be used with TrueType GX or OpenType variation */
 257   /*    fonts.                                                             */
 258   /*                                                                       */
 259   /* <Input>                                                               */
 260   /*    face    :: A handle to the source face.                            */
 261   /*                                                                       */
 262   /* <Output>                                                              */
 263   /*    amaster :: The Multiple Masters descriptor.                        */
 264   /*                                                                       */
 265   /* <Return>                                                              */
 266   /*    FreeType error code.  0~means success.                             */
 267   /*                                                                       */
 268   FT_EXPORT( FT_Error )
 269   FT_Get_Multi_Master( FT_Face           face,
 270                        FT_Multi_Master  *amaster );
 271 
 272 
 273   /*************************************************************************/
 274   /*                                                                       */
 275   /* <Function>                                                            */
 276   /*    FT_Get_MM_Var                                                      */
 277   /*                                                                       */
 278   /* <Description>                                                         */
 279   /*    Retrieve a variation descriptor for a given font.                  */
 280   /*                                                                       */
 281   /*    This function works with all supported variation formats.          */
 282   /*                                                                       */
 283   /* <Input>                                                               */
 284   /*    face    :: A handle to the source face.                            */
 285   /*                                                                       */
 286   /* <Output>                                                              */
 287   /*    amaster :: The variation descriptor.                               */
 288   /*               Allocates a data structure, which the user must         */
 289   /*               deallocate with a call to @FT_Done_MM_Var after use.    */
 290   /*                                                                       */
 291   /* <Return>                                                              */
 292   /*    FreeType error code.  0~means success.                             */
 293   /*                                                                       */
 294   FT_EXPORT( FT_Error )
 295   FT_Get_MM_Var( FT_Face      face,
 296                  FT_MM_Var*  *amaster );
 297 
 298 
 299   /*************************************************************************/
 300   /*                                                                       */
 301   /* <Function>                                                            */
 302   /*    FT_Done_MM_Var                                                     */
 303   /*                                                                       */
 304   /* <Description>                                                         */
 305   /*    Free the memory allocated by @FT_Get_MM_Var.                       */
 306   /*                                                                       */
 307   /* <Input>                                                               */
 308   /*    library :: A handle of the face's parent library object that was   */
 309   /*               used in the call to @FT_Get_MM_Var to create `amaster'. */
 310   /*                                                                       */
 311   /* <Return>                                                              */
 312   /*    FreeType error code.  0~means success.                             */
 313   /*                                                                       */
 314   FT_EXPORT( FT_Error )
 315   FT_Done_MM_Var( FT_Library   library,
 316                   FT_MM_Var   *amaster );
 317 
 318 
 319   /*************************************************************************/
 320   /*                                                                       */
 321   /* <Function>                                                            */
 322   /*    FT_Set_MM_Design_Coordinates                                       */
 323   /*                                                                       */
 324   /* <Description>                                                         */
 325   /*    For Adobe MM fonts, choose an interpolated font design through     */
 326   /*    design coordinates.                                                */
 327   /*                                                                       */
 328   /*    This function can't be used with TrueType GX or OpenType variation */
 329   /*    fonts.                                                             */
 330   /*                                                                       */
 331   /* <InOut>                                                               */
 332   /*    face       :: A handle to the source face.                         */
 333   /*                                                                       */
 334   /* <Input>                                                               */
 335   /*    num_coords :: The number of available design coordinates.  If it   */
 336   /*                  is larger than the number of axes, ignore the excess */
 337   /*                  values.  If it is smaller than the number of axes,   */
 338   /*                  use default values for the remaining axes.           */
 339   /*                                                                       */
 340   /*    coords     :: An array of design coordinates.                      */
 341   /*                                                                       */
 342   /* <Return>                                                              */
 343   /*    FreeType error code.  0~means success.                             */
 344   /*                                                                       */
 345   /* <Note>                                                                */
 346   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
 347   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
 348   /*                                                                       */
 349   /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
 350   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
 351   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
 352   /*    is zero, this bit flag gets unset.                                 */
 353   /*                                                                       */
 354   FT_EXPORT( FT_Error )
 355   FT_Set_MM_Design_Coordinates( FT_Face   face,
 356                                 FT_UInt   num_coords,
 357                                 FT_Long*  coords );
 358 
 359 
 360   /*************************************************************************/
 361   /*                                                                       */
 362   /* <Function>                                                            */
 363   /*    FT_Set_Var_Design_Coordinates                                      */
 364   /*                                                                       */
 365   /* <Description>                                                         */
 366   /*    Choose an interpolated font design through design coordinates.     */
 367   /*                                                                       */
 368   /*    This function works with all supported variation formats.          */
 369   /*                                                                       */
 370   /* <InOut>                                                               */
 371   /*    face       :: A handle to the source face.                         */
 372   /*                                                                       */
 373   /* <Input>                                                               */
 374   /*    num_coords :: The number of available design coordinates.  If it   */
 375   /*                  is larger than the number of axes, ignore the excess */
 376   /*                  values.  If it is smaller than the number of axes,   */
 377   /*                  use default values for the remaining axes.           */
 378   /*                                                                       */
 379   /*    coords     :: An array of design coordinates.                      */
 380   /*                                                                       */
 381   /* <Return>                                                              */
 382   /*    FreeType error code.  0~means success.                             */
 383   /*                                                                       */
 384   /* <Note>                                                                */
 385   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
 386   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
 387   /*    [Since 2.9] `Default values' means the currently selected named    */
 388   /*    instance (or the base font if no named instance is selected).      */
 389   /*                                                                       */
 390   /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
 391   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
 392   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
 393   /*    is zero, this bit flag gets unset.                                 */
 394   /*                                                                       */
 395   FT_EXPORT( FT_Error )
 396   FT_Set_Var_Design_Coordinates( FT_Face    face,
 397                                  FT_UInt    num_coords,
 398                                  FT_Fixed*  coords );
 399 
 400 
 401   /*************************************************************************/
 402   /*                                                                       */
 403   /* <Function>                                                            */
 404   /*    FT_Get_Var_Design_Coordinates                                      */
 405   /*                                                                       */
 406   /* <Description>                                                         */
 407   /*    Get the design coordinates of the currently selected interpolated  */
 408   /*    font.                                                              */
 409   /*                                                                       */
 410   /*    This function works with all supported variation formats.          */
 411   /*                                                                       */
 412   /* <Input>                                                               */
 413   /*    face       :: A handle to the source face.                         */
 414   /*                                                                       */
 415   /*    num_coords :: The number of design coordinates to retrieve.  If it */
 416   /*                  is larger than the number of axes, set the excess    */
 417   /*                  values to~0.                                         */
 418   /*                                                                       */
 419   /* <Output>                                                              */
 420   /*    coords     :: The design coordinates array.                        */
 421   /*                                                                       */
 422   /* <Return>                                                              */
 423   /*    FreeType error code.  0~means success.                             */
 424   /*                                                                       */
 425   /* <Since>                                                               */
 426   /*    2.7.1                                                              */
 427   /*                                                                       */
 428   FT_EXPORT( FT_Error )
 429   FT_Get_Var_Design_Coordinates( FT_Face    face,
 430                                  FT_UInt    num_coords,
 431                                  FT_Fixed*  coords );
 432 
 433 
 434   /*************************************************************************/
 435   /*                                                                       */
 436   /* <Function>                                                            */
 437   /*    FT_Set_MM_Blend_Coordinates                                        */
 438   /*                                                                       */
 439   /* <Description>                                                         */
 440   /*    Choose an interpolated font design through normalized blend        */
 441   /*    coordinates.                                                       */
 442   /*                                                                       */
 443   /*    This function works with all supported variation formats.          */
 444   /*                                                                       */
 445   /* <InOut>                                                               */
 446   /*    face       :: A handle to the source face.                         */
 447   /*                                                                       */
 448   /* <Input>                                                               */
 449   /*    num_coords :: The number of available design coordinates.  If it   */
 450   /*                  is larger than the number of axes, ignore the excess */
 451   /*                  values.  If it is smaller than the number of axes,   */
 452   /*                  use default values for the remaining axes.           */
 453   /*                                                                       */
 454   /*    coords     :: The design coordinates array (each element must be   */
 455   /*                  between 0 and 1.0 for Adobe MM fonts, and between    */
 456   /*                  -1.0 and 1.0 for TrueType GX and OpenType variation  */
 457   /*                  fonts).                                              */
 458   /*                                                                       */
 459   /* <Return>                                                              */
 460   /*    FreeType error code.  0~means success.                             */
 461   /*                                                                       */
 462   /* <Note>                                                                */
 463   /*    [Since 2.8.1] To reset all axes to the default values, call the    */
 464   /*    function with `num_coords' set to zero and `coords' set to NULL.   */
 465   /*    [Since 2.9] `Default values' means the currently selected named    */
 466   /*    instance (or the base font if no named instance is selected).      */
 467   /*                                                                       */
 468   /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
 469   /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
 470   /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
 471   /*    is zero, this bit flag gets unset.                                 */
 472   /*                                                                       */
 473   FT_EXPORT( FT_Error )
 474   FT_Set_MM_Blend_Coordinates( FT_Face    face,
 475                                FT_UInt    num_coords,
 476                                FT_Fixed*  coords );
 477 
 478 
 479   /*************************************************************************/
 480   /*                                                                       */
 481   /* <Function>                                                            */
 482   /*    FT_Get_MM_Blend_Coordinates                                        */
 483   /*                                                                       */
 484   /* <Description>                                                         */
 485   /*    Get the normalized blend coordinates of the currently selected     */
 486   /*    interpolated font.                                                 */
 487   /*                                                                       */
 488   /*    This function works with all supported variation formats.          */
 489   /*                                                                       */
 490   /* <Input>                                                               */
 491   /*    face       :: A handle to the source face.                         */
 492   /*                                                                       */
 493   /*    num_coords :: The number of normalized blend coordinates to        */
 494   /*                  retrieve.  If it is larger than the number of axes,  */
 495   /*                  set the excess values to~0.5 for Adobe MM fonts, and */
 496   /*                  to~0 for TrueType GX and OpenType variation fonts.   */
 497   /*                                                                       */
 498   /* <Output>                                                              */
 499   /*    coords     :: The normalized blend coordinates array.              */
 500   /*                                                                       */
 501   /* <Return>                                                              */
 502   /*    FreeType error code.  0~means success.                             */
 503   /*                                                                       */
 504   /* <Since>                                                               */
 505   /*    2.7.1                                                              */
 506   /*                                                                       */
 507   FT_EXPORT( FT_Error )
 508   FT_Get_MM_Blend_Coordinates( FT_Face    face,
 509                                FT_UInt    num_coords,
 510                                FT_Fixed*  coords );
 511 
 512 
 513   /*************************************************************************/
 514   /*                                                                       */
 515   /* <Function>                                                            */
 516   /*    FT_Set_Var_Blend_Coordinates                                       */
 517   /*                                                                       */
 518   /* <Description>                                                         */
 519   /*    This is another name of @FT_Set_MM_Blend_Coordinates.              */
 520   /*                                                                       */
 521   FT_EXPORT( FT_Error )
 522   FT_Set_Var_Blend_Coordinates( FT_Face    face,
 523                                 FT_UInt    num_coords,
 524                                 FT_Fixed*  coords );
 525 
 526 
 527   /*************************************************************************/
 528   /*                                                                       */
 529   /* <Function>                                                            */
 530   /*    FT_Get_Var_Blend_Coordinates                                       */
 531   /*                                                                       */
 532   /* <Description>                                                         */
 533   /*    This is another name of @FT_Get_MM_Blend_Coordinates.              */
 534   /*                                                                       */
 535   /* <Since>                                                               */
 536   /*    2.7.1                                                              */
 537   /*                                                                       */
 538   FT_EXPORT( FT_Error )
 539   FT_Get_Var_Blend_Coordinates( FT_Face    face,
 540                                 FT_UInt    num_coords,
 541                                 FT_Fixed*  coords );
 542 
 543 
 544   /*************************************************************************/
 545   /*                                                                       */
 546   /* <Enum>                                                                */
 547   /*    FT_VAR_AXIS_FLAG_XXX                                               */
 548   /*                                                                       */
 549   /* <Description>                                                         */
 550   /*    A list of bit flags used in the return value of                    */
 551   /*    @FT_Get_Var_Axis_Flags.                                            */
 552   /*                                                                       */
 553   /* <Values>                                                              */
 554   /*    FT_VAR_AXIS_FLAG_HIDDEN ::                                         */
 555   /*      The variation axis should not be exposed to user interfaces.     */
 556   /*                                                                       */
 557   /* <Since>                                                               */
 558   /*    2.8.1                                                              */
 559   /*                                                                       */
 560 #define FT_VAR_AXIS_FLAG_HIDDEN  1
 561 
 562 
 563   /*************************************************************************/
 564   /*                                                                       */
 565   /* <Function>                                                            */
 566   /*    FT_Get_Var_Axis_Flags                                              */
 567   /*                                                                       */
 568   /* <Description>                                                         */
 569   /*    Get the `flags' field of an OpenType Variation Axis Record.        */
 570   /*                                                                       */
 571   /*    Not meaningful for Adobe MM fonts (`*flags' is always zero).       */
 572   /*                                                                       */
 573   /* <Input>                                                               */
 574   /*    master     :: The variation descriptor.                            */
 575   /*                                                                       */
 576   /*    axis_index :: The index of the requested variation axis.           */
 577   /*                                                                       */
 578   /* <Output>                                                              */
 579   /*    flags      :: The `flags' field.  See @FT_VAR_AXIS_FLAG_XXX for    */
 580   /*                  possible values.                                     */
 581   /*                                                                       */
 582   /* <Return>                                                              */
 583   /*    FreeType error code.  0~means success.                             */
 584   /*                                                                       */
 585   /* <Since>                                                               */
 586   /*    2.8.1                                                              */
 587   /*                                                                       */
 588   FT_EXPORT( FT_Error )
 589   FT_Get_Var_Axis_Flags( FT_MM_Var*  master,
 590                          FT_UInt     axis_index,
 591                          FT_UInt*    flags );
 592 
 593 
 594   /*************************************************************************/
 595   /*                                                                       */
 596   /* <Function>                                                            */
 597   /*    FT_Set_Named_Instance                                              */
 598   /*                                                                       */
 599   /* <Description>                                                         */
 600   /*    Set or change the current named instance.                          */
 601   /*                                                                       */
 602   /* <Input>                                                               */
 603   /*    face           :: A handle to the source face.                     */
 604   /*                                                                       */
 605   /*    instance_index :: The index of the requested instance, starting    */
 606   /*                      with value 1.  If set to value 0, FreeType       */
 607   /*                      switches to font access without a named          */
 608   /*                      instance.                                        */
 609   /*                                                                       */
 610   /* <Return>                                                              */
 611   /*    FreeType error code.  0~means success.                             */
 612   /*                                                                       */
 613   /* <Note>                                                                */
 614   /*    The function uses the value of `instance_index' to set bits 16-30  */
 615   /*    of the face's `face_index' field.  It also resets any variation    */
 616   /*    applied to the font, and the @FT_FACE_FLAG_VARIATION bit of the    */
 617   /*    face's `face_flags' field gets reset to zero (i.e.,                */
 618   /*    @FT_IS_VARIATION will return false).                               */
 619   /*                                                                       */
 620   /*    For Adobe MM fonts (which don't have named instances) this         */
 621   /*    function simply resets the current face to the default instance.   */
 622   /*                                                                       */
 623   /* <Since>                                                               */
 624   /*    2.9                                                                */
 625   /*                                                                       */
 626   FT_EXPORT( FT_Error )
 627   FT_Set_Named_Instance( FT_Face  face,
 628                          FT_UInt  instance_index );
 629 
 630   /* */
 631 
 632 
 633 FT_END_HEADER
 634 
 635 #endif /* FTMM_H_ */
 636 
 637 
 638 /* END */