• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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