diff options
author | Werner Lemberg <wl@gnu.org> | 2000-06-21 03:03:28 +0000 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2000-06-21 03:03:28 +0000 |
commit | 9ca2af38384a3fc3a26cc7eae96c59ad08aca2b2 (patch) | |
tree | fcc7b6f99c36ab5940d9a4eb366525f85082b267 /src/type1/t1gload.h | |
parent | 9c05268eae13a1b4de23e889dde5bd002a584a48 (diff) | |
download | freetype2-9ca2af38384a3fc3a26cc7eae96c59ad08aca2b2.tar.gz |
A new formatting orgy.
Added some `#if 0' to completely disable the CID AFM stuff. In case this is
not correct please fix.
Diffstat (limited to 'src/type1/t1gload.h')
-rw-r--r-- | src/type1/t1gload.h | 380 |
1 files changed, 132 insertions, 248 deletions
diff --git a/src/type1/t1gload.h b/src/type1/t1gload.h index d0f678fb2..5d21f2e0d 100644 --- a/src/type1/t1gload.h +++ b/src/type1/t1gload.h @@ -1,36 +1,20 @@ -/******************************************************************* - * - * t1gload.h 1.0 - * - * Type1 Glyph Loader. - * - * 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 glyph loader uses three distinct objects to build - * scaled and hinted outlines from a charstrings program. These are : - * - * - a glyph builder, T1_Builder, used to store the built outline - * - * - a glyph hinter, T1_Hinter, used to record and apply the stem - * hints - * - * - a charstrings interpreter, T1_Decoder, used to parse the - * Type 1 charstrings stream, manage a stack and call the builder - * and/or hinter depending on the opcodes. - * - * Ideally, a Type 2 glyph loader would only need to have its own - * T2_Decoder object (assuming the hinter is able to manage all - * kinds of hints). - * - ******************************************************************/ +/***************************************************************************/ +/* */ +/* t1gload.h */ +/* */ +/* Type 1 Glyph Loader (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 T1GLOAD_H #define T1GLOAD_H @@ -42,25 +26,15 @@ #endif -/*************************************************************************/ -/* */ -/* <Structure> T1_Builder_Funcs */ -/* */ -/* <Description> */ -/* a structure used to store the address of various functions */ -/* used by a glyph builder to implement the outline's "path */ -/* construction". */ -/* */ -/* */ typedef struct T1_Builder_ T1_Builder; typedef FT_Error (*T1_Builder_EndChar)( T1_Builder* loader ); - typedef FT_Error (*T1_Builder_Sbw) ( T1_Builder* loader, - FT_Pos sbx, - FT_Pos sby, - FT_Pos wx, - FT_Pos wy ); + typedef FT_Error (*T1_Builder_Sbw)( T1_Builder* loader, + FT_Pos sbx, + FT_Pos sby, + FT_Pos wx, + FT_Pos wy ); typedef FT_Error (*T1_Builder_ClosePath)( T1_Builder* loader ); @@ -80,7 +54,17 @@ FT_Pos dx3, FT_Pos dy3 ); - typedef struct T1_Builder_Funcs_ + + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_Builder_Funcs */ + /* */ + /* <Description> */ + /* A structure to store the address of various functions used by a */ + /* glyph builder to implement the outline's `path construction'. */ + /* */ + typedef struct T1_Builder_Funcs_ { T1_Builder_EndChar end_char; T1_Builder_Sbw set_bearing_point; @@ -92,51 +76,62 @@ } T1_Builder_Funcs; - -/*************************************************************************/ -/* */ -/* <Structure> T1_Builder */ -/* */ -/* <Description> */ -/* a structure used during glyph loading to store its outline. */ -/* */ -/* <Fields> */ -/* system :: current system object */ -/* face :: current face object */ -/* size :: current size object */ -/* glyph :: current glyph slot */ -/* */ -/* current :: current glyph outline */ -/* base :: base glyph outline */ -/* */ -/* max_points :: maximum points in builder outline */ -/* max_contours :: maximum contours in builder outline */ -/* */ -/* last :: last point position */ -/* */ -/* scale_x :: horizontal scale ( FUnits to sub-pixels ) */ -/* scale_y :: vertical scale ( FUnits to sub-pixels ) */ -/* pos_x :: horizontal translation (composite glyphs) */ -/* pos_y :: vertical translation (composite glyph) */ -/* */ -/* left_bearing :: left side bearing point */ -/* advance :: horizontal advance vector */ -/* */ -/* path_begun :: flag, indicates that a new path has begun */ -/* load_points :: flag, if not set, no points are loaded */ -/* */ -/* pass :: pass number for multi-pass hinters */ -/* */ -/* funcs :: table of builder functions used to perform */ -/* the outline's path construction */ -/* */ -/* hint_point :: index of next point to hint.. */ -/* */ -/* */ -/* */ -/* */ - - struct T1_Builder_ + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_Builder */ + /* */ + /* <Description> */ + /* A structure used during glyph loading to store its outline. */ + /* */ + /* <Fields> */ + /* memory :: The current memory object. */ + /* */ + /* face :: The current face object. */ + /* */ + /* size :: The current size object. */ + /* */ + /* glyph :: The current glyph slot. */ + /* */ + /* current :: The current glyph outline. */ + /* */ + /* base :: The base glyph outline. */ + /* */ + /* max_points :: The maximum number of points in builder outline. */ + /* */ + /* max_contours :: The maximum number of contours in builder outline. */ + /* */ + /* last :: The last point position. */ + /* */ + /* scale_x :: The horizontal scale (FUnits to sub-pixels). */ + /* */ + /* scale_y :: The vertical scale (FUnits to sub-pixels). */ + /* */ + /* pos_x :: The horizontal translation (for composite glyphs). */ + /* */ + /* pos_y :: The vertical translation (for composite glyphs). */ + /* */ + /* left_bearing :: The left side bearing point. */ + /* */ + /* advance :: The horizontal advance vector. */ + /* */ + /* no_recurse :: */ + /* */ + /* bbox :: The glyph's bounding box. */ + /* */ + /* path_begun :: A flag which indicates that a new path has begun. */ + /* */ + /* load_points :: A flag which indicates, if not set, that no points */ + /* are loaded. */ + /* */ + /* pass :: The pass number for multi-pass hinters. */ + /* */ + /* hint_point :: The index of the next point to hint. */ + /* */ + /* funcs :: A table of builder functions used to perform the */ + /* outline's path construction. */ + /* */ + struct T1_Builder_ { FT_Memory memory; T1_Face face; @@ -173,15 +168,6 @@ }; -/*************************************************************************/ -/* */ -/* <Structure> T1_Hinter_Funcs */ -/* */ -/* <Description> */ -/* a structure used to store the address of various functions */ -/* used by a Type 1 hinter to perform outline hinting. */ -/* */ - typedef FT_Error (*T1_Hinter_ChangeHints)( T1_Builder* builder ); typedef FT_Error (*T1_Hinter_DotSection)( T1_Builder* builder ); @@ -191,7 +177,6 @@ FT_Pos width, FT_Bool vertical ); - typedef FT_Error (*T1_Hinter_Stem3)( T1_Builder* builder, FT_Pos pos0, FT_Pos width0, @@ -201,18 +186,27 @@ FT_Pos width2, FT_Bool vertical ); + + /*************************************************************************/ + /* */ + /* <Structure> */ + /* T1_Hinter_Funcs */ + /* */ + /* <Description> */ + /* A structure to store the address of various functions used by a */ + /* Type 1 hinter to perform outline hinting. */ + /* */ typedef struct T1_Hinter_Func_ { - T1_Hinter_ChangeHints change_hints; - T1_Hinter_DotSection dot_section; - T1_Hinter_Stem stem; - T1_Hinter_Stem3 stem3; + T1_Hinter_ChangeHints change_hints; + T1_Hinter_DotSection dot_section; + T1_Hinter_Stem stem; + T1_Hinter_Stem3 stem3; } T1_Hinter_Funcs; - - typedef enum T1_Operator_ + typedef enum T1_Operator_ { op_none = 0, op_endchar, @@ -246,10 +240,8 @@ } T1_Operator; - - /* execution context charstring zone */ - typedef struct T1_Decoder_Zone_ + typedef struct T1_Decoder_Zone_ { FT_Byte* base; FT_Byte* limit; @@ -258,166 +250,54 @@ } T1_Decoder_Zone; - typedef struct T1_Decoder_ + typedef struct T1_Decoder_ { - T1_Builder builder; - T1_Hinter_Funcs hinter; + T1_Builder builder; + T1_Hinter_Funcs hinter; - FT_Int stack[ T1_MAX_CHARSTRINGS_OPERANDS ]; - FT_Int* top; + FT_Int stack[T1_MAX_CHARSTRINGS_OPERANDS]; + FT_Int* top; - T1_Decoder_Zone zones[ T1_MAX_SUBRS_CALLS+1 ]; - T1_Decoder_Zone* zone; + T1_Decoder_Zone zones[T1_MAX_SUBRS_CALLS + 1]; + T1_Decoder_Zone* zone; - FT_Int flex_state; - FT_Int num_flex_vectors; - FT_Vector flex_vectors[7]; + FT_Int flex_state; + FT_Int num_flex_vectors; + FT_Vector flex_vectors[7]; } T1_Decoder; - -/********************************************************************* - * - * <Function> - * T1_Init_Builder - * - * <Description> - * Initialise a given glyph builder. - * - * <Input> - * builder :: glyph builder to initialise - * face :: current face object - * size :: current size object - * glyph :: current glyph object - * funcs :: glyph builder functions (or "methods"). - * - * <Note> - * This function is exported for now because it is used by the - * "t1dump" utility. Later, it will be accessed through a - * format-specific extension - * - *********************************************************************/ - LOCAL_DEF - void T1_Init_Builder( T1_Builder* builder, - T1_Face face, - T1_Size size, - T1_GlyphSlot glyph, - const T1_Builder_Funcs* funcs ); - -/********************************************************************* - * - * <Function> - * T1_Done_Builder - * - * <Description> - * Finalise a given glyph builder. Its content can still be - * used after the call, but the function saves important information - * within the corresponding glyph slot. - * - * <Input> - * builder :: glyph builder to initialise - * - * <Note> - * This function is exported for now because it is used by the - * "t1dump" utility. Later, it will be accessed through a - * format-specific extension - * - *********************************************************************/ + void T1_Init_Builder( T1_Builder* builder, + T1_Face face, + T1_Size size, + T1_GlyphSlot glyph, + const T1_Builder_Funcs* funcs ); LOCAL_DEF void T1_Done_Builder( T1_Builder* builder ); - -/********************************************************************* - * - * <Function> - * T1_Init_Decoder - * - * <Description> - * Initialise a given Type 1 decoder for parsing - * - * <Input> - * decoder :: Type 1 decoder to initialise - * funcs :: hinter functions interface - * - * <Note> - * This function is exported for now because it is used by the - * "t1dump" utility. Later, it will be accessed through a - * format-specific extension - * - *********************************************************************/ - LOCAL_DEF void T1_Init_Decoder( T1_Decoder* decoder, const T1_Hinter_Funcs* funcs ); - - - /* Compute the maximum advance width of a font through quick parsing */ LOCAL_DEF FT_Error T1_Compute_Max_Advance( T1_Face face, - FT_Int *max_advance ); + FT_Int* max_advance ); - - /* This function is exported, because it is used by the T1Dump utility */ LOCAL_DEF - FT_Error T1_Parse_CharStrings( T1_Decoder* decoder, - FT_Byte* charstring_base, - FT_Int charstring_len, - FT_Int num_subrs, - FT_Byte** subrs_base, - FT_Int* subrs_len ); - - - -/*************************************************************************/ -/* */ -/* <Function> T1_Add_Points */ -/* */ -/* <Description> */ -/* Checks that there is enough room in the current load glyph outline */ -/* to accept "num_points" additional outline points. If not, this */ -/* function grows the load outline's arrays accordingly.. */ -/* */ -/* <Input> */ -/* builder :: pointer to glyph builder object */ -/* num_points :: number of points that will be added later */ -/* */ -/* <Return> */ -/* Type1 error code. 0 means success */ -/* */ -/* <Note> */ -/* This function does NOT update the points count in the glyph loader */ -/* This must be done by the caller itself, after this function is */ -/* invoked.. */ -/* */ + FT_Error T1_Parse_CharStrings( T1_Decoder* decoder, + FT_Byte* charstring_base, + FT_Int charstring_len, + FT_Int num_subrs, + FT_Byte** subrs_base, + FT_Int* subrs_len ); + LOCAL_DEF FT_Error T1_Add_Points( T1_Builder* builder, FT_Int num_points ); -/*************************************************************************/ -/* */ -/* <Function> T1_Add_Contours */ -/* */ -/* <Description> */ -/* Checks that there is enough room in the current load glyph outline */ -/* to accept "num_contours" additional contours. If not, this func */ -/* the load outline's arrays accordingly.. */ -/* */ -/* <Input> */ -/* builder :: pointer to glyph builder object */ -/* num_contours :: number of contours that will be added later */ -/* */ -/* <Return> */ -/* Type1 error code. 0 means success */ -/* */ -/* <Note> */ -/* This function does NOT update the contours count in the load glyph */ -/* This must be done by the caller itself, after this function is */ -/* invoked.. */ -/* */ LOCAL_DEF FT_Error T1_Add_Contours( T1_Builder* builder, FT_Int num_contours ); @@ -434,4 +314,8 @@ } #endif + #endif /* T1GLOAD_H */ + + +/* END */ |