os/textandloc/fontservices/freetypefontrasteriser/freetype2/src/truetype/ttgxvar.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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, FTL.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_Int          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 */