| /**************************************************************************** |
| * |
| * cidparse.h |
| * |
| * CID-keyed Type1 parser (specification). |
| * |
| * Copyright (C) 1996-2022 by |
| * David Turner, Robert Wilhelm, and Werner Lemberg. |
| * |
| * This file is part of the FreeType project, and may only be used, |
| * modified, and distributed under the terms of the FreeType project |
| * license, LICENSE.TXT. By continuing to use, modify, or distribute |
| * this file you indicate that you have read the license and |
| * understand and accept it fully. |
| * |
| */ |
| |
| |
| #ifndef CIDPARSE_H_ |
| #define CIDPARSE_H_ |
| |
| |
| #include <freetype/internal/t1types.h> |
| #include <freetype/internal/ftstream.h> |
| #include <freetype/internal/psaux.h> |
| |
| |
| FT_BEGIN_HEADER |
| |
| |
| /************************************************************************** |
| * |
| * @Struct: |
| * CID_Parser |
| * |
| * @Description: |
| * A CID_Parser is an object used to parse a Type 1 fonts very |
| * quickly. |
| * |
| * @Fields: |
| * root :: |
| * The root PS_ParserRec fields. |
| * |
| * stream :: |
| * The current input stream. |
| * |
| * postscript :: |
| * A pointer to the data to be parsed. |
| * |
| * postscript_len :: |
| * The length of the data to be parsed. |
| * |
| * data_offset :: |
| * The start position of the binary data (i.e., the |
| * end of the data to be parsed. |
| * |
| * binary_length :: |
| * The length of the data after the `StartData' |
| * command if the data format is hexadecimal. |
| * |
| * cid :: |
| * A structure which holds the information about |
| * the current font. |
| * |
| * num_dict :: |
| * The number of font dictionaries. |
| */ |
| typedef struct CID_Parser_ |
| { |
| PS_ParserRec root; |
| FT_Stream stream; |
| |
| FT_Byte* postscript; |
| FT_ULong postscript_len; |
| |
| FT_ULong data_offset; |
| |
| FT_ULong binary_length; |
| |
| CID_FaceInfo cid; |
| FT_UInt num_dict; |
| |
| } CID_Parser; |
| |
| |
| FT_LOCAL( FT_Error ) |
| cid_parser_new( CID_Parser* parser, |
| FT_Stream stream, |
| FT_Memory memory, |
| PSAux_Service psaux ); |
| |
| FT_LOCAL( void ) |
| cid_parser_done( CID_Parser* parser ); |
| |
| |
| /************************************************************************** |
| * |
| * PARSING ROUTINES |
| * |
| */ |
| |
| #define cid_parser_skip_spaces( p ) \ |
| (p)->root.funcs.skip_spaces( &(p)->root ) |
| #define cid_parser_skip_PS_token( p ) \ |
| (p)->root.funcs.skip_PS_token( &(p)->root ) |
| |
| #define cid_parser_to_int( p ) (p)->root.funcs.to_int( &(p)->root ) |
| #define cid_parser_to_fixed( p, t ) (p)->root.funcs.to_fixed( &(p)->root, t ) |
| |
| #define cid_parser_to_coord_array( p, m, c ) \ |
| (p)->root.funcs.to_coord_array( &(p)->root, m, c ) |
| #define cid_parser_to_fixed_array( p, m, f, t ) \ |
| (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t ) |
| #define cid_parser_to_token( p, t ) \ |
| (p)->root.funcs.to_token( &(p)->root, t ) |
| #define cid_parser_to_token_array( p, t, m, c ) \ |
| (p)->root.funcs.to_token_array( &(p)->root, t, m, c ) |
| |
| #define cid_parser_load_field( p, f, o ) \ |
| (p)->root.funcs.load_field( &(p)->root, f, o, 0, 0 ) |
| #define cid_parser_load_field_table( p, f, o ) \ |
| (p)->root.funcs.load_field_table( &(p)->root, f, o, 0, 0 ) |
| |
| |
| FT_END_HEADER |
| |
| #endif /* CIDPARSE_H_ */ |
| |
| |
| /* END */ |