/***************************************************************************/ | |
/* */ | |
/* 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 */ |