1/****************************************************************************
2 *
3 * afmparse.h
4 *
5 * AFM parser (specification).
6 *
7 * Copyright (C) 2006-2019 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
27FT_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
84FT_END_HEADER
85
86#endif /* AFMPARSE_H_ */
87
88
89/* END */
90