diff options
author | Werner Lemberg <wl@gnu.org> | 2000-07-04 03:37:18 +0000 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2000-07-04 03:37:18 +0000 |
commit | aa8c7da0bfe3a4e93ac380478fbad7d35c0be0d0 (patch) | |
tree | 71fa5a3d084589f05baa8e1c205e61c5d188c995 /src/type1/t1tokens.h | |
parent | d0c36e3b5a1087eff8b88b3bac1106e3cd46844c (diff) | |
download | freetype2-aa8c7da0bfe3a4e93ac380478fbad7d35c0be0d0.tar.gz |
Don't use -lefence in the demo Makefile.
Added C++ guards in ftmodule.h
Fix error check in ftglyph.c
Formatting; adding copyrights; fixing documentation
Diffstat (limited to 'src/type1/t1tokens.h')
-rw-r--r-- | src/type1/t1tokens.h | 337 |
1 files changed, 111 insertions, 226 deletions
diff --git a/src/type1/t1tokens.h b/src/type1/t1tokens.h index 0a5df32e5..eeb91bb25 100644 --- a/src/type1/t1tokens.h +++ b/src/type1/t1tokens.h @@ -1,43 +1,38 @@ -/******************************************************************* - * - * t1tokens.h - * - * Type 1 tokenizer - * - * Copyright 1996 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 tokenizer is in charge of loading and reading a Type1 font - * file (either in PFB or PFA format), and extract successive tokens - * and keywords from its two streams (i.e. the font program, and the - * private dictionary). - * - * Eexec decryption is performed automatically when entering the - * private dictionary, or when retrieving char strings.. - * - ******************************************************************/ +/***************************************************************************/ +/* */ +/* t1tokens.h */ +/* */ +/* Type 1 tokenizer (specification). */ +/* */ +/* Copyright 1996-2000 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 T1TOKENS_H #define T1TOKENS_H #include <t1objs.h> -/* enum value of first keyword */ -#define key_first_ 100 + /* enum value of first keyword */ +#define key_first_ 100 + + /* enum value of first immediate name */ +#define imm_first_ 200 -/* enum value of first immediate name */ -#define imm_first_ 200 - typedef enum T1_TokenType_ + typedef enum T1_TokenType_ { tok_error = 0, - tok_eof, /* end of file */ + tok_eof, /* end of file */ /* simple token types */ @@ -50,14 +45,14 @@ tok_hexarray, /* array of hexadecimal nibbles */ tok_any, /* anything else */ - /* Postscript keywords - placed in lexicographical order */ + /* Postscript keywords -- placed in lexicographical order */ - key_RD_alternate = key_first_, /* "-|" = alternate form of RD */ - key_ExpertEncoding, + key_RD_alternate = key_first_, /* `-|' = alternate form of RD */ + key_ExpertEncoding, key_ND, key_NP, key_RD, - key_StandardEncoding, + key_StandardEncoding, key_array, key_begin, key_closefile, @@ -77,16 +72,16 @@ key_readonly, key_true, key_userdict, - key_NP_alternate, /* "|" = alternate form of NP */ - key_ND_alternate, /* "|-" = alternate form of ND */ + key_NP_alternate, /* `|' = alternate form of NP */ + key_ND_alternate, /* `|-' = alternate form of ND */ key_max, /* always keep this value there */ - /* Postscript immediate names - other names will be ignored, except */ - /* in charstrings.. */ + /* Postscript immediate names -- other names will be ignored, except */ + /* in charstrings */ - imm_RD_alternate = imm_first_, /* "-|" = alternate form of RD */ - imm_notdef, /* "/.notdef" immediate */ + imm_RD_alternate = imm_first_, /* `-|' = alternate form of RD */ + imm_notdef, /* `/.notdef' immediate */ imm_BlendAxisTypes, imm_BlueFuzz, imm_BlueScale, @@ -135,219 +130,109 @@ imm_password, imm_version, - imm_NP_alternate, /* "|" = alternate form of NP */ - imm_ND_alternate, /* "|-" = alternate form of ND */ + imm_NP_alternate, /* `|' = alternate form of NP */ + imm_ND_alternate, /* `|-' = alternate form of ND */ imm_max /* always keep this value here */ } T1_TokenType; - /* these arrays are visible for debugging purposes.. */ - extern const char* t1_keywords[]; - extern const char* t1_immediates[]; - - - /*************************************************************************/ - /* */ - /* <Struct> T1_Token */ - /* */ - /* <Description> */ - /* A structure used to describe a token in the current input */ - /* stream. Note that the Type1 driver doesn't try to interpret */ - /* tokens until it really needs to.. */ - /* */ - /* <Fields> */ - /* kind :: token type. Describes the token to the loader */ - /* kind2 :: detailed token type. */ - /* */ - /* start :: index of first character of token in input stream */ - /* */ - /* len :: length of token in characters. */ - /* */ - typedef struct T1_Token_ + /* these arrays are visible for debugging purposes */ + extern const char* t1_keywords[]; + extern const char* t1_immediates[]; + + + /*************************************************************************/ + /* */ + /* <Struct> */ + /* T1_Token */ + /* */ + /* <Description> */ + /* A structure used to describe a token in the current input stream. */ + /* Note that the Type1 driver doesn't try to interpret tokens until */ + /* it really needs to. */ + /* */ + /* <Fields> */ + /* kind :: The token type. Describes the token to the loader. */ + /* */ + /* kind2 :: Detailed token type. */ + /* */ + /* start :: The index of the first character of token in the input */ + /* stream. */ + /* */ + /* len :: The length of the token in characters. */ + /* */ + typedef struct T1_Token_ { - T1_TokenType kind; /* simple type */ - T1_TokenType kind2; /* detailed type */ - FT_Int start; /* index of first token character */ - FT_Int len; /* length of token in chars */ + T1_TokenType kind; /* simple type */ + T1_TokenType kind2; /* detailed type */ + FT_Int start; /* index of first token character */ + FT_Int len; /* length of token in chars */ } T1_Token; - - - typedef struct T1_TokenParser_ + typedef struct T1_TokenParser_ { - FT_Memory memory; - FT_Stream stream; + FT_Memory memory; + FT_Stream stream; - FT_Bool in_pfb; /* true if PFB file, PFA otherwise */ - FT_Bool in_private; /* true if in private dictionary */ + FT_Bool in_pfb; /* true if PFB file, PFA otherwise */ + FT_Bool in_private; /* true if in private dictionary */ - FT_Byte* base; /* base address of current read buffer */ - FT_Long cursor; /* current position in read buffer */ - FT_Long limit; /* limit of current read buffer */ - FT_Long max; /* maximum size of read buffer */ + FT_Byte* base; /* base address of current read buffer */ + FT_Long cursor; /* current position in read buffer */ + FT_Long limit; /* limit of current read buffer */ + FT_Long max; /* maximum size of read buffer */ - FT_Error error; /* last error */ - T1_Token token; /* last token read */ + FT_Error error; /* last error */ + T1_Token token; /* last token read */ } T1_TokenParser; + /*************************************************************************/ + /* */ + /* <Type> */ + /* T1_Tokenizer */ + /* */ + /* <Description> */ + /* A handle to an object used to extract tokens from the input. The */ + /* object is able to perform PFA/PFB recognition, eexec decryption of */ + /* the private dictionary, as well as eexec decryption of the */ + /* charstrings. */ + /* */ + typedef T1_TokenParser* T1_Tokenizer; + + + LOCAL_DEF + FT_Error New_Tokenizer( FT_Stream stream, + T1_Tokenizer* tokenizer ); + + LOCAL_DEF + FT_Error Done_Tokenizer( T1_Tokenizer tokenizer ); + + LOCAL_DEF + FT_Error Open_PrivateDict( T1_Tokenizer tokenizer ); - /*************************************************************************/ - /* */ - /* <Type> T1_Tokenizer */ - /* */ - /* <Description> */ - /* A handle to an object used to extract tokens from the input. */ - /* The object is able to perform PFA/PFB recognition, eexec */ - /* decryption of the private dictionary, as well as eexec decryption */ - /* of the charstrings.. */ - /* */ - typedef T1_TokenParser* T1_Tokenizer; - - - /*************************************************************************/ - /* */ - /* <Function> New_Tokenizer */ - /* */ - /* <Description> */ - /* Creates a new tokenizer from a given input stream. This function */ - /* automatically recognizes "pfa" or "pfb" files. The function */ - /* "Read_Token" can then be used to extract successive tokens from */ - /* the stream.. */ - /* */ - /* <Input> */ - /* stream :: input stream */ - /* */ - /* <Output> */ - /* tokenizer :: handle to new tokenizer object.. */ - /* */ - /* <Return> */ - /* Type1 error code. 0 means success.. */ - /* */ - /* <Note> */ - /* This function copies the stream handle within the object. Callers */ - /* should not discard "stream". This is done by the Done_Tokenizer */ - /* function.. */ - /* */ - LOCAL_DEF - FT_Error New_Tokenizer( FT_Stream stream, - T1_Tokenizer* tokenizer ); - - - - /*************************************************************************/ - /* */ - /* <Function> Done_Tokenizer */ - /* */ - /* <Description> */ - /* Closes a given tokenizer. This function will also close the */ - /* stream embedded in the object.. */ - /* */ - /* <Input> */ - /* tokenizer :: target tokenizer object */ - /* */ - /* <Return> */ - /* Type1 error code. 0 means success.. */ - /* */ - LOCAL_DEF - FT_Error Done_Tokenizer( T1_Tokenizer tokenizer ); - - - - /*************************************************************************/ - /* */ - /* <Function> Open_PrivateDict */ - /* */ - /* <Description> */ - /* This function must be called to set the tokenizer to the private */ - /* section of the Type1 file. It recognizes automatically the */ - /* the kind of eexec encryption used (ascii or binary).. */ - /* */ - /* <Input> */ - /* tokenizer :: target tokenizer object */ - /* lenIV :: value of the "lenIV" variable.. */ - /* */ - /* <Return> */ - /* Type1 error code. 0 means success.. */ - /* */ - LOCAL_DEF - FT_Error Open_PrivateDict( T1_Tokenizer tokenizer ); - - - - /*************************************************************************/ - /* */ - /* <Function> Read_Token */ - /* */ - /* <Description> */ - /* Read a new token from the current input stream. This function */ - /* extracts a token from the font program until "Open_PrivateDict" */ - /* has been called. After this, it returns tokens from the */ - /* (eexec-encrypted) private dictionnary.. */ - /* */ - /* <Input> */ - /* tokenizer :: target tokenizer object */ - /* */ - /* <Return> */ - /* Type1 error code. 0 means success.. */ - /* */ - /* <Note> */ - /* One should use the function Read_CharStrings to read the binary */ - /* charstrings from the private dict.. */ - /* */ - LOCAL_DEF - FT_Error Read_Token( T1_Tokenizer tokenizer ); + LOCAL_DEF + FT_Error Read_Token( T1_Tokenizer tokenizer ); #if 0 - /*************************************************************************/ - /* */ - /* <Function> Read_CharStrings */ - /* */ - /* <Description> */ - /* Read a charstrings from the current input stream. These are */ - /* binary bytes that encode each individual glyph outline. */ - /* */ - /* <Input> */ - /* tokenizer :: target tokenizer object */ - /* num_chars :: number of binary bytes to read */ - /* */ - /* <Output> */ - /* buffer :: target array of bytes. These are eexec-decrypted.. */ - /* */ - /* <Return> */ - /* Type1 error code. 0 means success.. */ - /* */ - /* <Note> */ - /* One should use the function Read_CharStrings to read the binary */ - /* charstrings from the private dict.. */ - /* */ - LOCAL_DEF - FT_Error Read_CharStrings( T1_Tokenizer tokenizer, - FT_Int num_chars, - FT_Byte* buffer ); -#endif - - /*************************************************************************/ - /* */ - /* <Function> t1_decrypt */ - /* */ - /* <Description> */ - /* Performs the Type 1 charstring decryption process.. */ - /* */ - /* <Input> */ - /* buffer :: base address of data to decrypt */ - /* length :: number of bytes to decrypt from base address */ - /* seed :: ecnryption seed (4330 for charstrings). */ - /* */ + LOCAL_DEF + FT_Error Read_CharStrings( T1_Tokenizer tokenizer, + FT_Int num_chars, + FT_Byte* buffer ); +#endif /* 0 */ + LOCAL_DEF void t1_decrypt( FT_Byte* buffer, FT_Int length, FT_UShort seed ); #endif /* T1TOKENS_H */ + + +/* END */ |