2000-01-27 15:02:04 +01:00
|
|
|
/*******************************************************************
|
|
|
|
*
|
|
|
|
* t1parse.h 2.0
|
|
|
|
*
|
|
|
|
* Type1 parser.
|
|
|
|
*
|
|
|
|
* Copyright 1996-1998 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.
|
|
|
|
*
|
|
|
|
* The Type 1 parser is in charge of the following:
|
|
|
|
*
|
|
|
|
* - provide an implementation of a growing sequence of
|
2000-06-28 01:21:51 +02:00
|
|
|
* objects called a Z1_Table (used to build various tables
|
2000-01-27 15:02:04 +01:00
|
|
|
* needed by the loader).
|
|
|
|
*
|
|
|
|
* - opening .pfb and .pfa files to extract their top-level
|
|
|
|
* and private dictionaries
|
|
|
|
*
|
|
|
|
* - read numbers, arrays & strings from any dictionary
|
|
|
|
*
|
|
|
|
* See "t1load.c" to see how data is loaded from the font file
|
|
|
|
*
|
|
|
|
******************************************************************/
|
|
|
|
|
2000-07-05 06:32:02 +02:00
|
|
|
#ifndef Z1PARSE_H
|
|
|
|
#define Z1PARSE_H
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-05-11 20:23:52 +02:00
|
|
|
#include <freetype/internal/t1types.h>
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2000-05-24 00:16:27 +02:00
|
|
|
|
2000-05-24 23:12:02 +02:00
|
|
|
/* simple enumeration type used to identify token types */
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef enum Z1_Token_Type_
|
2000-05-24 23:12:02 +02:00
|
|
|
{
|
|
|
|
t1_token_none = 0,
|
|
|
|
t1_token_any,
|
|
|
|
t1_token_string,
|
|
|
|
t1_token_array,
|
|
|
|
|
|
|
|
/* do not remove */
|
|
|
|
t1_token_max
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Token_Type;
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
/* a simple structure used to identify tokens */
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef struct Z1_Token_Rec_
|
2000-05-24 23:12:02 +02:00
|
|
|
{
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte* start; /* first character of token in input stream */
|
|
|
|
FT_Byte* limit; /* first character after the token */
|
2000-06-28 01:21:51 +02:00
|
|
|
Z1_Token_Type type; /* type of token.. */
|
2000-05-24 23:12:02 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Token_Rec;
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
/* enumeration type used to identify object fields */
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef enum Z1_Field_Type_
|
2000-05-24 00:16:27 +02:00
|
|
|
{
|
|
|
|
t1_field_none = 0,
|
|
|
|
t1_field_bool,
|
|
|
|
t1_field_integer,
|
|
|
|
t1_field_fixed,
|
|
|
|
t1_field_string,
|
2000-05-24 23:12:02 +02:00
|
|
|
t1_field_integer_array,
|
2000-05-24 00:16:27 +02:00
|
|
|
t1_field_fixed_array,
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
/* do not remove */
|
|
|
|
t1_field_max
|
2000-05-24 00:16:27 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Field_Type;
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
/* structure type used to model object fields */
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef struct Z1_Field_Rec_
|
2000-05-24 00:16:27 +02:00
|
|
|
{
|
2000-06-28 01:21:51 +02:00
|
|
|
Z1_Field_Type type; /* type of field */
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_UInt offset; /* offset of field in object */
|
|
|
|
FT_UInt size; /* size of field in bytes */
|
|
|
|
FT_UInt array_max; /* maximum number of elements for array */
|
|
|
|
FT_UInt count_offset; /* offset of element count for arrays */
|
|
|
|
FT_Int flag_bit; /* bit number for field flag */
|
2000-05-24 23:12:02 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Field_Rec;
|
2000-05-24 23:12:02 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_REF(s,f) (((s*)0)->f)
|
2000-05-24 23:12:02 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_BOOL( _ftype, _fname ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_bool, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0, 0, 0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_NUM( _ftype, _fname ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_integer, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0, 0, 0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_FIXED( _ftype, _fname, _power ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_fixed, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0, 0, 0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_STRING( _ftype, _fname ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_string, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0, 0, 0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_NUM_ARRAY( _ftype, _fname, _fcount, _fmax ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_integer, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)[0]), \
|
2000-05-24 23:12:02 +02:00
|
|
|
_fmax, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fcount), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_FIXED_ARRAY( _ftype, _fname, _fcount, _fmax ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_fixed, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)[0]), \
|
2000-05-24 23:12:02 +02:00
|
|
|
_fmax, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fcount), \
|
2000-05-24 23:12:02 +02:00
|
|
|
0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_NUM_ARRAY2( _ftype, _fname, _fmax ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_integer, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)[0]), \
|
2000-05-24 23:12:02 +02:00
|
|
|
_fmax, \
|
|
|
|
0, 0 }
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
#define Z1_FIELD_FIXED_ARRAY2( _ftype, _fname, _fmax ) \
|
2000-05-24 23:12:02 +02:00
|
|
|
{ t1_field_fixed, \
|
2000-06-28 01:21:51 +02:00
|
|
|
(FT_UInt)(char*)&Z1_FIELD_REF(_ftype,_fname), \
|
|
|
|
sizeof(Z1_FIELD_REF(_ftype,_fname)[0]), \
|
2000-05-24 23:12:02 +02:00
|
|
|
_fmax, \
|
|
|
|
0, 0 }
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2000-06-28 01:21:51 +02:00
|
|
|
* <Struct> Z1_Table
|
2000-01-27 15:02:04 +01:00
|
|
|
*
|
|
|
|
* <Description>
|
2000-06-28 01:21:51 +02:00
|
|
|
* A Z1_Table is a simple object used to store an array of objects
|
2000-01-27 15:02:04 +01:00
|
|
|
* in a single memory block.
|
|
|
|
*
|
|
|
|
* <Fields>
|
|
|
|
* block :: address in memory of the growheap's block. This
|
|
|
|
* can change between two object adds, due to the use
|
|
|
|
* of 'realloc'.
|
|
|
|
*
|
|
|
|
* cursor :: current top of the grow heap within its block
|
|
|
|
*
|
|
|
|
* capacity :: current size of the heap block. Increments by 1 Kb
|
|
|
|
*
|
|
|
|
* init :: boolean. set when the table has been initialized
|
|
|
|
* (the table user should set this field)
|
|
|
|
*
|
|
|
|
* max_elems :: maximum number of elements in table
|
|
|
|
* num_elems :: current number of elements in table
|
|
|
|
*
|
|
|
|
* elements :: table of element addresses within the block
|
|
|
|
* lengths :: table of element sizes within the block
|
|
|
|
*
|
|
|
|
* memory :: memory object used for memory operations (alloc/realloc)
|
|
|
|
*/
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef struct Z1_Table_
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte* block; /* current memory block */
|
|
|
|
FT_Int cursor; /* current cursor in memory block */
|
|
|
|
FT_Int capacity; /* current size of memory block */
|
|
|
|
FT_Long init;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int max_elems;
|
|
|
|
FT_Int num_elems;
|
|
|
|
FT_Byte** elements; /* addresses of table elements */
|
|
|
|
FT_Int* lengths; /* lengths of table elements */
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
FT_Memory memory;
|
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Table;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
|
*
|
2000-06-28 01:21:51 +02:00
|
|
|
* <Struct> Z1_Parser
|
2000-01-27 15:02:04 +01:00
|
|
|
*
|
|
|
|
* <Description>
|
2000-06-28 01:21:51 +02:00
|
|
|
* A Z1_Parser is an object used to parse a Type 1 fonts very
|
2000-01-27 15:02:04 +01:00
|
|
|
* quickly.
|
|
|
|
*
|
|
|
|
* <Fields>
|
|
|
|
* stream :: current input stream
|
|
|
|
* memory :: current memory object
|
|
|
|
*
|
|
|
|
* base_dict :: pointer to top-level dictionary
|
|
|
|
* base_len :: length in bytes of top dict
|
|
|
|
*
|
|
|
|
* private_dict :: pointer to private dictionary
|
|
|
|
* private_len :: length in bytes of private dict
|
|
|
|
*
|
|
|
|
* in_pfb :: boolean. Indicates that we're in a .pfb file
|
|
|
|
* in_memory :: boolean. Indicates a memory-based stream
|
|
|
|
* single_block :: boolean. Indicates that the private dict
|
|
|
|
* is stored in lieu of the base dict
|
|
|
|
*
|
|
|
|
* cursor :: current parser cursor
|
|
|
|
* limit :: current parser limit (first byte after current
|
|
|
|
* dictionary).
|
|
|
|
*
|
|
|
|
* error :: current parsing error
|
|
|
|
*/
|
2000-06-28 01:21:51 +02:00
|
|
|
typedef struct Z1_Parser_
|
2000-01-27 15:02:04 +01:00
|
|
|
{
|
|
|
|
FT_Stream stream;
|
|
|
|
FT_Memory memory;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte* base_dict;
|
|
|
|
FT_Int base_len;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte* private_dict;
|
|
|
|
FT_Int private_len;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte in_pfb;
|
|
|
|
FT_Byte in_memory;
|
|
|
|
FT_Byte single_block;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Byte* cursor;
|
|
|
|
FT_Byte* limit;
|
|
|
|
FT_Error error;
|
2000-05-17 01:44:38 +02:00
|
|
|
|
2000-06-28 01:21:51 +02:00
|
|
|
} Z1_Parser;
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_New_Table( Z1_Table* table,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int count,
|
2000-01-27 15:02:04 +01:00
|
|
|
FT_Memory memory );
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_Add_Table( Z1_Table* table,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int index,
|
2000-01-27 15:02:04 +01:00
|
|
|
void* object,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int length );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-03-13 13:57:27 +01:00
|
|
|
#if 0
|
2000-01-27 15:02:04 +01:00
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_Done_Table( Z1_Table* table );
|
2000-03-13 13:57:27 +01:00
|
|
|
#endif
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_Release_Table( Z1_Table* table );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Long Z1_ToInt ( Z1_Parser* parser );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Long Z1_ToFixed( Z1_Parser* parser, FT_Int power_ten );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Int Z1_ToCoordArray( Z1_Parser* parser,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int max_coords,
|
|
|
|
FT_Short* coords );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Int Z1_ToFixedArray( Z1_Parser* parser,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int max_values,
|
|
|
|
FT_Fixed* values,
|
|
|
|
FT_Int power_ten );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-05-26 04:07:40 +02:00
|
|
|
#if 0
|
2000-01-27 15:02:04 +01:00
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_String* Z1_ToString( Z1_Parser* parser );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Bool Z1_ToBool( Z1_Parser* parser );
|
2000-03-06 10:51:19 +01:00
|
|
|
#endif
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-05-24 00:16:27 +02:00
|
|
|
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_Skip_Spaces( Z1_Parser* parser );
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_ToToken( Z1_Parser* parser,
|
|
|
|
Z1_Token_Rec* token );
|
2000-05-24 23:12:02 +02:00
|
|
|
|
A complete revision of FreeType 2's GNU makefiles (of the library):
Tons of unnecessary stuff have been removed; only the essential rules
have been retained.
The source files now depend on all header files in include/freetype,
include/freetype/config, and include/freetype/internal. This is not
optimal, I know, and I'll try to improve this, but it is better than
before (namely no dependencies on `internal').
FTDEBUG_SRC has been added (similar to FTSYS_SRC) -- I don't know
exactly whether this is really useful, but it doesn't harm.
There is now more documentation in the makefiles itself.
io-frames.html: Use of <th>, <code>, and <var> for better tagging.
Reactivating of FT_DEBUG_LEVEL_xxx macros.
Added a lot of #include directives to make `multi' builds possible -- note
that currently the modules cid, t1, and t1z have clashing structures and
functions which means that you can only use one of these three modules for a
multi build.
Added some missing function declarations to (local) header files.
Renamed some T1_Open_Face() to CID_Open_Face() in the cid module -- a lot
of other functions should be renamed also...
Replaced many FT_xxx stuff with T1_xxx in t1z driver -- this isn't finished
yet...
Fixed FT_Free() to allow a NULL pointer without an assertion (this has
always been a valid assumption in FreeType, at least in FT 1.x).
A lot of other, minor fixes (mostly documentation).
2000-06-11 05:46:57 +02:00
|
|
|
LOCAL_FUNC
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_ToTokenArray( Z1_Parser* parser,
|
|
|
|
Z1_Token_Rec* tokens,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_UInt max_tokens,
|
|
|
|
FT_Int* pnum_tokens );
|
A complete revision of FreeType 2's GNU makefiles (of the library):
Tons of unnecessary stuff have been removed; only the essential rules
have been retained.
The source files now depend on all header files in include/freetype,
include/freetype/config, and include/freetype/internal. This is not
optimal, I know, and I'll try to improve this, but it is better than
before (namely no dependencies on `internal').
FTDEBUG_SRC has been added (similar to FTSYS_SRC) -- I don't know
exactly whether this is really useful, but it doesn't harm.
There is now more documentation in the makefiles itself.
io-frames.html: Use of <th>, <code>, and <var> for better tagging.
Reactivating of FT_DEBUG_LEVEL_xxx macros.
Added a lot of #include directives to make `multi' builds possible -- note
that currently the modules cid, t1, and t1z have clashing structures and
functions which means that you can only use one of these three modules for a
multi build.
Added some missing function declarations to (local) header files.
Renamed some T1_Open_Face() to CID_Open_Face() in the cid module -- a lot
of other functions should be renamed also...
Replaced many FT_xxx stuff with T1_xxx in t1z driver -- this isn't finished
yet...
Fixed FT_Free() to allow a NULL pointer without an assertion (this has
always been a valid assumption in FreeType, at least in FT 1.x).
A lot of other, minor fixes (mostly documentation).
2000-06-11 05:46:57 +02:00
|
|
|
|
2000-05-24 23:12:02 +02:00
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_Load_Field( Z1_Parser* parser,
|
|
|
|
const Z1_Field_Rec* field,
|
2000-05-24 23:12:02 +02:00
|
|
|
void** objects,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_UInt max_objects,
|
|
|
|
FT_ULong* pflags );
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_Load_Field_Table( Z1_Parser* parser,
|
|
|
|
const Z1_Field_Rec* field,
|
2000-05-24 23:12:02 +02:00
|
|
|
void** objects,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_UInt max_objects,
|
|
|
|
FT_ULong* pflags );
|
2000-05-24 23:12:02 +02:00
|
|
|
|
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_New_Parser( Z1_Parser* parser,
|
2000-01-27 15:02:04 +01:00
|
|
|
FT_Stream stream,
|
|
|
|
FT_Memory memory );
|
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
FT_Error Z1_Get_Private_Dict( Z1_Parser* parser );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_Decrypt( FT_Byte* buffer,
|
2000-06-16 21:34:52 +02:00
|
|
|
FT_Int length,
|
|
|
|
FT_UShort seed );
|
2000-01-27 15:02:04 +01:00
|
|
|
|
2000-03-17 12:51:33 +01:00
|
|
|
LOCAL_DEF
|
2000-06-28 01:21:51 +02:00
|
|
|
void Z1_Done_Parser( Z1_Parser* parser );
|
2000-03-17 12:51:33 +01:00
|
|
|
|
2000-01-27 15:02:04 +01:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2000-07-05 06:32:02 +02:00
|
|
|
#endif /* Z1PARSE_H */
|
2000-01-27 15:02:04 +01:00
|
|
|
|
|
|
|
|
|
|
|
/* END */
|
|
|
|
|