/***************************************************************************/ /* */ /* afmparse.h */ /* */ /* AFM parser (specification). */ /* */ /* Copyright 2006 by */ /* 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. */ /* */ /***************************************************************************/ #ifndef __AFMPARSE_H__ #define __AFMPARSE_H__ #include #include FT_INTERNAL_POSTSCRIPT_AUX_H FT_BEGIN_HEADER FT_LOCAL( FT_Error ) afm_parser_init( AFM_Parser parser, FT_Memory memory, FT_Byte* base, FT_Byte* limit ); FT_LOCAL( void ) afm_parser_done( AFM_Parser parser ); FT_LOCAL( FT_Error ) afm_parser_parse( AFM_Parser parser ); enum AFM_ValueType_ { AFM_VALUE_TYPE_STRING, AFM_VALUE_TYPE_NAME, AFM_VALUE_TYPE_FIXED, /* real number */ AFM_VALUE_TYPE_INTEGER, AFM_VALUE_TYPE_BOOL, AFM_VALUE_TYPE_INDEX /* glyph index */ }; typedef struct AFM_ValueRec_ { enum AFM_ValueType_ type; union { char* s; FT_Fixed f; FT_Int i; FT_Bool b; } u; } AFM_ValueRec, *AFM_Value; #define AFM_MAX_ARGUMENTS 5 FT_LOCAL( FT_Int ) afm_parser_read_vals( AFM_Parser parser, AFM_Value vals, FT_UInt n ); /* read the next key from the next line or column */ FT_LOCAL( char* ) afm_parser_next_key( AFM_Parser parser, FT_Bool line, FT_Offset* len ); FT_END_HEADER #endif /* __AFMPARSE_H__ */ /* END */