• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
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_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 
83 FT_END_HEADER
84 
85 #endif /* __AFMPARSE_H__ */
86 
87 
88 /* END */
89