• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  *
3  * afmparse.h
4  *
5  *   AFM parser (specification).
6  *
7  * Copyright (C) 2006-2020 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 <freetype/internal/psaux.h>
24 
25 
26 FT_BEGIN_HEADER
27 
28 
29   FT_LOCAL( FT_Error )
30   afm_parser_init( AFM_Parser  parser,
31                    FT_Memory   memory,
32                    FT_Byte*    base,
33                    FT_Byte*    limit );
34 
35 
36   FT_LOCAL( void )
37   afm_parser_done( AFM_Parser  parser );
38 
39 
40   FT_LOCAL( FT_Error )
41   afm_parser_parse( AFM_Parser  parser );
42 
43 
44   enum  AFM_ValueType_
45   {
46     AFM_VALUE_TYPE_STRING,
47     AFM_VALUE_TYPE_NAME,
48     AFM_VALUE_TYPE_FIXED,   /* real number */
49     AFM_VALUE_TYPE_INTEGER,
50     AFM_VALUE_TYPE_BOOL,
51     AFM_VALUE_TYPE_INDEX    /* glyph index */
52   };
53 
54 
55   typedef struct  AFM_ValueRec_
56   {
57     enum AFM_ValueType_  type;
58     union
59     {
60       char*     s;
61       FT_Fixed  f;
62       FT_Int    i;
63       FT_UInt   u;
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_Int      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