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