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 27FT_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 83FT_END_HEADER 84 85#endif /* __AFMPARSE_H__ */ 86 87 88/* END */ 89