Home | History | Annotate | Download | only in type42
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  t42parse.h                                                             */
      4 /*                                                                         */
      5 /*    Type 42 font parser (specification).                                 */
      6 /*                                                                         */
      7 /*  Copyright 2002-2015 by                                                 */
      8 /*  Roberto Alameda.                                                       */
      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 __T42PARSE_H__
     20 #define __T42PARSE_H__
     21 
     22 
     23 #include "t42objs.h"
     24 #include FT_INTERNAL_POSTSCRIPT_AUX_H
     25 
     26 
     27 FT_BEGIN_HEADER
     28 
     29   typedef struct  T42_ParserRec_
     30   {
     31     PS_ParserRec  root;
     32     FT_Stream     stream;
     33 
     34     FT_Byte*      base_dict;
     35     FT_Long       base_len;
     36 
     37     FT_Bool       in_memory;
     38 
     39   } T42_ParserRec, *T42_Parser;
     40 
     41 
     42   typedef struct  T42_Loader_
     43   {
     44     T42_ParserRec  parser;          /* parser used to read the stream */
     45 
     46     FT_Int         num_chars;       /* number of characters in encoding */
     47     PS_TableRec    encoding_table;  /* PS_Table used to store the       */
     48                                     /* encoding character names         */
     49 
     50     FT_Int         num_glyphs;
     51     PS_TableRec    glyph_names;
     52     PS_TableRec    charstrings;
     53     PS_TableRec    swap_table;      /* For moving .notdef glyph to index 0. */
     54 
     55   } T42_LoaderRec, *T42_Loader;
     56 
     57 
     58   FT_LOCAL( FT_Error )
     59   t42_parser_init( T42_Parser     parser,
     60                    FT_Stream      stream,
     61                    FT_Memory      memory,
     62                    PSAux_Service  psaux );
     63 
     64   FT_LOCAL( void )
     65   t42_parser_done( T42_Parser  parser );
     66 
     67 
     68   FT_LOCAL( FT_Error )
     69   t42_parse_dict( T42_Face    face,
     70                   T42_Loader  loader,
     71                   FT_Byte*    base,
     72                   FT_Long     size );
     73 
     74 
     75   FT_LOCAL( void )
     76   t42_loader_init( T42_Loader  loader,
     77                    T42_Face    face );
     78 
     79   FT_LOCAL( void )
     80   t42_loader_done( T42_Loader  loader );
     81 
     82 
     83  /* */
     84 
     85 FT_END_HEADER
     86 
     87 
     88 #endif /* __T42PARSE_H__ */
     89 
     90 
     91 /* END */
     92