1 /**************************************************************************** 2 * 3 * afmparse.h 4 * 5 * AFM parser (specification). 6 * 7 * Copyright 2006-2018 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