| /***************************************************************************/ |
| /* */ |
| /* afmparse.h */ |
| /* */ |
| /* AFM parser (specification). */ |
| /* */ |
| /* Copyright 2006-2015 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 <ft2build.h> |
| #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_UInt u; |
| 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_Int 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 */ |