1 /***************************************************************************/
2 /*                                                                         */
3 /*  t42parse.h                                                             */
4 /*                                                                         */
5 /*    Type 42 font parser (specification).                                 */
6 /*                                                                         */
7 /*  Copyright 2002, 2003 by Roberto Alameda.                               */
8 /*                                                                         */
9 /*  This file is part of the FreeType project, and may only be used,       */
10 /*  modified, and distributed under the terms of the FreeType project      */
11 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
12 /*  this file you indicate that you have read the license and              */
13 /*  understand and accept it fully.                                        */
14 /*                                                                         */
15 /***************************************************************************/
16 
17 
18 #ifndef __T42PARSE_H__
19 #define __T42PARSE_H__
20 
21 
22 #include "t42objs.h"
23 #include FT_INTERNAL_POSTSCRIPT_AUX_H
24 
25 
26 FT_BEGIN_HEADER
27 
28   typedef struct  T42_ParserRec_
29   {
30     PS_ParserRec  root;
31     FT_Stream     stream;
32 
33     FT_Byte*      base_dict;
34     FT_Long       base_len;
35 
36     FT_Bool       in_memory;
37 
38   } T42_ParserRec, *T42_Parser;
39 
40 
41   typedef struct  T42_Loader_
42   {
43     T42_ParserRec  parser;          /* parser used to read the stream */
44 
45     FT_UInt        num_chars;       /* number of characters in encoding */
46     PS_TableRec    encoding_table;  /* PS_Table used to store the       */
47                                     /* encoding character names         */
48 
49     FT_UInt        num_glyphs;
50     PS_TableRec    glyph_names;
51     PS_TableRec    charstrings;
52     PS_TableRec    swap_table;      /* For moving .notdef glyph to index 0. */
53 
54   } T42_LoaderRec, *T42_Loader;
55 
56 
57   FT_LOCAL( FT_Error )
58   t42_parser_init( T42_Parser     parser,
59                    FT_Stream      stream,
60                    FT_Memory      memory,
61                    PSAux_Service  psaux );
62 
63   FT_LOCAL( void )
64   t42_parser_done( T42_Parser  parser );
65 
66 
67   FT_LOCAL( FT_Error )
68   t42_parse_dict( T42_Face    face,
69                   T42_Loader  loader,
70                   FT_Byte*    base,
71                   FT_Long     size );
72 
73 
74   FT_LOCAL( void )
75   t42_loader_init( T42_Loader  loader,
76                    T42_Face    face );
77 
78   FT_LOCAL( void )
79   t42_loader_done( T42_Loader  loader );
80 
81 
82  /* */
83 
84 FT_END_HEADER
85 
86 
87 #endif /* __T42PARSE_H__ */
88 
89 
90 /* END */
91