Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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 */
  183.