1 /***************************************************************************/ 2 /* */ 3 /* afmparse.h */ 4 /* */ 5 /* AFM parser (specification). */ 6 /* */ 7 /* Copyright 2006-2015 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_UInt u; 65 FT_Bool b; 66 67 } u; 68 69 } AFM_ValueRec, *AFM_Value; 70 71 #define AFM_MAX_ARGUMENTS 5 72 73 FT_LOCAL( FT_Int ) 74 afm_parser_read_vals( AFM_Parser parser, 75 AFM_Value vals, 76 FT_Int n ); 77 78 /* read the next key from the next line or column */ 79 FT_LOCAL( char* ) 80 afm_parser_next_key( AFM_Parser parser, 81 FT_Bool line, 82 FT_Offset* len ); 83 84 FT_END_HEADER 85 86 #endif /* __AFMPARSE_H__ */ 87 88 89 /* END */ 90