misc/libfreetype/src/truetype/ttgxvar.h
branchwebgl
changeset 9521 8054d9d775fd
parent 9282 92af50454cf2
parent 9519 b8b5c82eb61b
child 9950 2759212a27de
equal deleted inserted replaced
9282:92af50454cf2 9521:8054d9d775fd
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  ttgxvar.h                                                              */
       
     4 /*                                                                         */
       
     5 /*    TrueType GX Font Variation loader (specification)                    */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2004 by                                                      */
       
     8 /*  David Turner, Robert Wilhelm, Werner Lemberg and George Williams.      */
       
     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 __TTGXVAR_H__
       
    20 #define __TTGXVAR_H__
       
    21 
       
    22 
       
    23 #include <ft2build.h>
       
    24 #include "ttobjs.h"
       
    25 
       
    26 
       
    27 FT_BEGIN_HEADER
       
    28 
       
    29 
       
    30   /*************************************************************************/
       
    31   /*                                                                       */
       
    32   /* <Struct>                                                              */
       
    33   /*    GX_AVarCorrespondenceRec                                           */
       
    34   /*                                                                       */
       
    35   /* <Description>                                                         */
       
    36   /*    A data structure representing `shortFracCorrespondence' in `avar'  */
       
    37   /*    table according to the specifications from Apple.                  */
       
    38   /*                                                                       */
       
    39   typedef struct  GX_AVarCorrespondenceRec_
       
    40   {
       
    41     FT_Fixed  fromCoord;
       
    42     FT_Fixed  toCoord;
       
    43 
       
    44   } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence;
       
    45 
       
    46 
       
    47   /*************************************************************************/
       
    48   /*                                                                       */
       
    49   /* <Struct>                                                              */
       
    50   /*    GX_AVarRec                                                         */
       
    51   /*                                                                       */
       
    52   /* <Description>                                                         */
       
    53   /*    Data from the segment field of `avar' table.                       */
       
    54   /*    There is one of these for each axis.                               */
       
    55   /*                                                                       */
       
    56   typedef struct  GX_AVarSegmentRec_
       
    57   {
       
    58     FT_UShort              pairCount;
       
    59     GX_AVarCorrespondence  correspondence; /* array with pairCount entries */
       
    60 
       
    61   } GX_AVarSegmentRec, *GX_AVarSegment;
       
    62 
       
    63 
       
    64   /*************************************************************************/
       
    65   /*                                                                       */
       
    66   /* <Struct>                                                              */
       
    67   /*    GX_BlendRec                                                        */
       
    68   /*                                                                       */
       
    69   /* <Description>                                                         */
       
    70   /*    Data for interpolating a font from a distortable font specified    */
       
    71   /*    by the GX *var tables ([fgca]var).                                 */
       
    72   /*                                                                       */
       
    73   /* <Fields>                                                              */
       
    74   /*    num_axis         :: The number of axes along which interpolation   */
       
    75   /*                         may happen                                    */
       
    76   /*                                                                       */
       
    77   /*    normalizedcoords :: A normalized value (between [-1,1]) indicating */
       
    78   /*                        the contribution along each axis to the final  */
       
    79   /*                        interpolated font.                             */
       
    80   /*                                                                       */
       
    81   typedef struct  GX_BlendRec_
       
    82   {
       
    83     FT_UInt         num_axis;
       
    84     FT_Fixed*       normalizedcoords;
       
    85 
       
    86     FT_MM_Var*      mmvar;
       
    87     FT_Offset       mmvar_len;
       
    88 
       
    89     FT_Bool         avar_checked;
       
    90     GX_AVarSegment  avar_segment;
       
    91 
       
    92     FT_UInt         tuplecount;      /* shared tuples in `gvar'           */
       
    93     FT_Fixed*       tuplecoords;     /* tuplecoords[tuplecount][num_axis] */
       
    94 
       
    95     FT_UInt         gv_glyphcnt;
       
    96     FT_ULong*       glyphoffsets;
       
    97 
       
    98   } GX_BlendRec;
       
    99 
       
   100 
       
   101   /*************************************************************************/
       
   102   /*                                                                       */
       
   103   /* <enum>                                                                */
       
   104   /*    GX_TupleCountFlags                                                 */
       
   105   /*                                                                       */
       
   106   /* <Description>                                                         */
       
   107   /*    Flags used within the `TupleCount' field of the `gvar' table.      */
       
   108   /*                                                                       */
       
   109   typedef enum  GX_TupleCountFlags_
       
   110   {
       
   111     GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000,
       
   112     GX_TC_RESERVED_TUPLE_FLAGS       = 0x7000,
       
   113     GX_TC_TUPLE_COUNT_MASK           = 0x0FFF
       
   114 
       
   115   } GX_TupleCountFlags;
       
   116 
       
   117 
       
   118   /*************************************************************************/
       
   119   /*                                                                       */
       
   120   /* <enum>                                                                */
       
   121   /*    GX_TupleIndexFlags                                                 */
       
   122   /*                                                                       */
       
   123   /* <Description>                                                         */
       
   124   /*    Flags used within the `TupleIndex' field of the `gvar' and `cvar'  */
       
   125   /*    tables.                                                            */
       
   126   /*                                                                       */
       
   127   typedef enum  GX_TupleIndexFlags_
       
   128   {
       
   129     GX_TI_EMBEDDED_TUPLE_COORD  = 0x8000,
       
   130     GX_TI_INTERMEDIATE_TUPLE    = 0x4000,
       
   131     GX_TI_PRIVATE_POINT_NUMBERS = 0x2000,
       
   132     GX_TI_RESERVED_TUPLE_FLAG   = 0x1000,
       
   133     GX_TI_TUPLE_INDEX_MASK      = 0x0FFF
       
   134 
       
   135   } GX_TupleIndexFlags;
       
   136 
       
   137 
       
   138 #define TTAG_wght  FT_MAKE_TAG( 'w', 'g', 'h', 't' )
       
   139 #define TTAG_wdth  FT_MAKE_TAG( 'w', 'd', 't', 'h' )
       
   140 #define TTAG_opsz  FT_MAKE_TAG( 'o', 'p', 's', 'z' )
       
   141 #define TTAG_slnt  FT_MAKE_TAG( 's', 'l', 'n', 't' )
       
   142 
       
   143 
       
   144   FT_LOCAL( FT_Error )
       
   145   TT_Set_MM_Blend( TT_Face    face,
       
   146                    FT_UInt    num_coords,
       
   147                    FT_Fixed*  coords );
       
   148 
       
   149   FT_LOCAL( FT_Error )
       
   150   TT_Set_Var_Design( TT_Face    face,
       
   151                      FT_UInt    num_coords,
       
   152                      FT_Fixed*  coords );
       
   153 
       
   154   FT_LOCAL( FT_Error )
       
   155   TT_Get_MM_Var( TT_Face      face,
       
   156                  FT_MM_Var*  *master );
       
   157 
       
   158 
       
   159   FT_LOCAL( FT_Error )
       
   160   tt_face_vary_cvt( TT_Face    face,
       
   161                     FT_Stream  stream );
       
   162 
       
   163 
       
   164   FT_LOCAL( FT_Error )
       
   165   TT_Vary_Get_Glyph_Deltas( TT_Face      face,
       
   166                             FT_UInt      glyph_index,
       
   167                             FT_Vector*  *deltas,
       
   168                             FT_UInt      n_points );
       
   169 
       
   170 
       
   171   FT_LOCAL( void )
       
   172   tt_done_blend( FT_Memory  memory,
       
   173                  GX_Blend   blend );
       
   174 
       
   175 
       
   176 FT_END_HEADER
       
   177 
       
   178 
       
   179 #endif /* __TTGXVAR_H__ */
       
   180 
       
   181 
       
   182 /* END */