1 /***************************************************************************/ 2 /* */ 3 /* afmparse.h */ 4 /* */ 5 /* AFM parser (specification). */ 6 /* */ 7 /* Copyright 2006 by */ 8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 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 __AFMPARSE_H__ 20 #define __AFMPARSE_H__ 21 22 23 #include <ft2build.h> 24 #include FT_INTERNAL_POSTSCRIPT_AUX_H 25 26 27 FT_BEGIN_HEADER 28 29 30 FT_LOCAL( FT_Error ) 31 afm_parser_init( AFM_Parser parser, 32 FT_Memory memory, 33 FT_Byte* base, 34 FT_Byte* limit ); 35 36 37 FT_LOCAL( void ) 38 afm_parser_done( AFM_Parser parser ); 39 40 41 FT_LOCAL( FT_Error ) 42 afm_parser_parse( AFM_Parser parser ); 43 44 45 enum AFM_ValueType_ 46 { 47 AFM_VALUE_TYPE_STRING, 48 AFM_VALUE_TYPE_NAME, 49 AFM_VALUE_TYPE_FIXED, /* real number */ 50 AFM_VALUE_TYPE_INTEGER, 51 AFM_VALUE_TYPE_BOOL, 52 AFM_VALUE_TYPE_INDEX /* glyph index */ 53 }; 54 55 56 typedef struct AFM_ValueRec_ 57 { 58 enum AFM_ValueType_ type; 59 union 60 { 61 char* s; 62 FT_Fixed f; 63 FT_Int i; 64 FT_Bool b; 65 66 } u; 67 68 } AFM_ValueRec, *AFM_Value; 69 70 #define AFM_MAX_ARGUMENTS 5 71 72 FT_LOCAL( FT_Int ) 73 afm_parser_read_vals( AFM_Parser parser, 74 AFM_Value vals, 75 FT_UInt n ); 76 77 /* read the next key from the next line or column */ 78 FT_LOCAL( char* ) 79 afm_parser_next_key( AFM_Parser parser, 80 FT_Bool line, 81 FT_Offset* len ); 82 83 FT_END_HEADER 84 85 #endif /* __AFMPARSE_H__ */ 86 87 88 /* END */ 89