/*******************************************************************
 *
 *  t1tokens.h
 *
 *  Type 1 tokens definition
 *
 *  Copyright 2000 David Turner, Robert Wilhelm and Werner Lemberg.
 *
 *  This file is part of the FreeType project, and may only be used
 *  modified and distributed under the terms of the FreeType project
 *  license, LICENSE.TXT. By continuing to use, modify or distribute
 *  this file you indicate that you have read the license and
 *  understand and accept it fully.
 *
 *  This file only contains macros that are expanded when compiling
 *  the "t1load.c" source file.
 *
 ******************************************************************/

#undef  FACE
#define FACE  (face->type1)

 /* define the font info dictionary parsing callbacks */

  PARSE_STRING("version",version)
  PARSE_STRING("Notice",notice)
  PARSE_STRING("FullName",full_name)
  PARSE_STRING("FamilyName",family_name)
  PARSE_STRING("Weight",weight)
  
  PARSE_INT("ItalicAngle",italic_angle)
  PARSE_BOOL("isFixedPitch",is_fixed_pitch)
  PARSE_NUM("UnderlinePosition",underline_position,T1_Short)
  PARSE_NUM("UnderlineThickness",underline_thickness,T1_UShort)

 /* define the private dict parsing callbacks */ 
 
   PARSE_INT("UniqueID",unique_id)
   PARSE_INT("lenIV",lenIV)
   
   PARSE_COORDS( "BlueValues", num_blues,       14, blue_values)
   PARSE_COORDS( "OtherBlues", num_other_blues, 10, other_blues)
   
   PARSE_COORDS( "FamilyBlues", num_family_blues,       14, family_blues)
   PARSE_COORDS( "FamilyOtherBlues", num_family_other_blues, 10, family_other_blues)
 
   PARSE_FIXED( "BlueScale", blue_scale)
   PARSE_INT( "BlueShift", blue_shift)
   
   PARSE_INT( "BlueFuzz", blue_fuzz)

   PARSE_COORDS2( "StdHW", 1, standard_width  )
   PARSE_COORDS2( "StdVW", 1, standard_height )
   
   PARSE_COORDS( "StemSnapH", num_snap_widths,  12, stem_snap_widths )
   PARSE_COORDS( "StemSnapV", num_snap_heights, 12, stem_snap_heights )
   
   PARSE_INT( "LanguageGroup", language_group )
   PARSE_INT( "password", password )
   PARSE_COORDS2( "MinFeature", 2, min_feature )

 /* define the top-level dictionary parsing callbacks */
 
/* PARSE_STRING( "FontName", font_name ) -- handled by special routine */
   PARSE_NUM( "PaintType", paint_type, T1_Byte )
   PARSE_NUM( "FontType", font_type, T1_Byte )
   PARSE_FIXEDS2( "FontMatrix", 4, font_matrix )
/*  PARSE_COORDS2( "FontBBox", 4, font_bbox ) -- handled by special func */
   PARSE_INT( "StrokeWidth", stroke_width )

#undef FACE


