18c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/***************************************************************************/
28c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*                                                                         */
38c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  t42parse.h                                                             */
48c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*                                                                         */
58c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*    Type 42 font parser (specification).                                 */
68c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*                                                                         */
70a0c22569deab933df21127e75db5c81f724f292Werner Lemberg/*  Copyright 2002-2018 by                                                 */
8f796cf6c6bfead0f527cd79329f26d4ec7ab43d4Werner Lemberg/*  Roberto Alameda.                                                       */
98c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*                                                                         */
108c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  This file is part of the FreeType project, and may only be used,       */
118c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  modified, and distributed under the terms of the FreeType project      */
128c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
138c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  this file you indicate that you have read the license and              */
148c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*  understand and accept it fully.                                        */
158c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/*                                                                         */
168c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/***************************************************************************/
178c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
188c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
1937412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#ifndef T42PARSE_H_
2037412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#define T42PARSE_H_
218c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
229f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
239f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner#include "t42objs.h"
249f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner#include FT_INTERNAL_POSTSCRIPT_AUX_H
259f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
268c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
279f95babf3e1be13c2f7ecda60938698b7e2da7f6David TurnerFT_BEGIN_HEADER
289f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
299f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  typedef struct  T42_ParserRec_
309f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  {
319f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    PS_ParserRec  root;
329f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    FT_Stream     stream;
339f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
349f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    FT_Byte*      base_dict;
3573861976779a754cc9b808760cc8e6cf98d52549Werner Lemberg    FT_Long       base_len;
369f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
37e3f41982a2391d2fcb61b8883af98aa4e5b82df1Werner Lemberg    FT_Bool       in_memory;
389f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
399f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  } T42_ParserRec, *T42_Parser;
409f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
419f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
429f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  typedef struct  T42_Loader_
439f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  {
449f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    T42_ParserRec  parser;          /* parser used to read the stream */
459f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
467b6b417c97f5617d866cf1552ef0745f83c9ca7dWerner Lemberg    FT_Int         num_chars;       /* number of characters in encoding */
479f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    PS_TableRec    encoding_table;  /* PS_Table used to store the       */
489f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                                    /* encoding character names         */
499f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
507b6b417c97f5617d866cf1552ef0745f83c9ca7dWerner Lemberg    FT_Int         num_glyphs;
519f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    PS_TableRec    glyph_names;
529f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner    PS_TableRec    charstrings;
53e3f41982a2391d2fcb61b8883af98aa4e5b82df1Werner Lemberg    PS_TableRec    swap_table;      /* For moving .notdef glyph to index 0. */
549f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
559f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  } T42_LoaderRec, *T42_Loader;
569f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
579f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
589f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  FT_LOCAL( FT_Error )
599f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  t42_parser_init( T42_Parser     parser,
609f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                   FT_Stream      stream,
619f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                   FT_Memory      memory,
629f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                   PSAux_Service  psaux );
639f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
649f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  FT_LOCAL( void )
659f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  t42_parser_done( T42_Parser  parser );
669f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
679f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
689f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  FT_LOCAL( FT_Error )
699f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  t42_parse_dict( T42_Face    face,
709f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                  T42_Loader  loader,
719f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                  FT_Byte*    base,
729f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                  FT_Long     size );
739f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
749f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
759f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  FT_LOCAL( void )
769f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  t42_loader_init( T42_Loader  loader,
779f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner                   T42_Face    face );
789f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
799f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  FT_LOCAL( void )
809f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner  t42_loader_done( T42_Loader  loader );
819f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
829f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
839f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner /* */
849f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
859f95babf3e1be13c2f7ecda60938698b7e2da7f6David TurnerFT_END_HEADER
869f95babf3e1be13c2f7ecda60938698b7e2da7f6David Turner
878c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
8837412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#endif /* T42PARSE_H_ */
898c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
908c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg
918c90c22dbe0b89970f0fb878117c3c2a5e2e214cWerner Lemberg/* END */
92