parent
95bec28220
commit
d16a4b8111
2 changed files with 0 additions and 1649 deletions
File diff suppressed because it is too large
Load Diff
@ -1,380 +0,0 @@ |
||||
/*******************************************************************
|
||||
* |
||||
* t1hinter.h 1.2 |
||||
* |
||||
* Type1 hinter.
|
||||
* |
||||
* Copyright 1996-1999 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 Hinter is in charge of fitting th scaled outline to the |
||||
* pixel grid in order to considerably improve the quality of |
||||
* the Type 1 font driver's output.. |
||||
* |
||||
******************************************************************/ |
||||
|
||||
#ifndef T1HINTER_H |
||||
#define T1HINTER_H |
||||
|
||||
#include <t1objs.h> |
||||
#include <t1gload.h> |
||||
|
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Snap_Zone |
||||
* |
||||
* <Description> |
||||
* A "snap zone" is used to model either a blue zone or a stem width |
||||
* at a given character size. It is made of a minimum and maximum |
||||
* edge, defined in 26.6 pixels, as well as one "original" and |
||||
* "scaled" position. |
||||
* |
||||
* the position corresponds to the stem width (for stem snap zones) |
||||
* or to the blue position (for blue zones) |
||||
* |
||||
* <Fields> |
||||
* orus :: original position in font units |
||||
* pix :: current position in sub-pixel units |
||||
* min :: minimum boundary in sub-pixel units |
||||
* max :: maximim boundary in sub-pixel units |
||||
* |
||||
************************************************************************/ |
||||
|
||||
typedef struct T1_Snap_Zone_ |
||||
{ |
||||
T1_Pos orus; |
||||
T1_Pos pix;
|
||||
T1_Pos min;
|
||||
T1_Pos max;
|
||||
|
||||
} T1_Snap_Zone; |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Edge |
||||
* |
||||
* <Description> |
||||
* A very simply structure used to model an stem edge |
||||
* |
||||
* <Fields> |
||||
* orus :: original edge position in font units |
||||
* pix :: scaled edge position in sub-pixel units |
||||
* |
||||
************************************************************************/ |
||||
|
||||
typedef struct T1_Edge_ |
||||
{ |
||||
T1_Pos orus; |
||||
T1_Pos pix;
|
||||
|
||||
} T1_Edge; |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Stem_Hint |
||||
* |
||||
* <Description> |
||||
* A simple structure used to model a stem hint |
||||
* |
||||
* <Fields> |
||||
* min_edge :: the hint's minimum edge |
||||
* max_edge :: the hint's maximum edge |
||||
* hint_flags :: some flags describing the stem properties |
||||
* |
||||
* <Note> |
||||
* the min and max edges of a ghost stem have the same position, |
||||
* even if they're coded in a weird way in the charstrings |
||||
* |
||||
************************************************************************/ |
||||
|
||||
typedef struct T1_Stem_Hint_ |
||||
{ |
||||
T1_Edge min_edge; |
||||
T1_Edge max_edge; |
||||
T1_Int hint_flags; |
||||
|
||||
} T1_Stem_Hint; |
||||
|
||||
|
||||
#define T1_HINT_FLAG_ACTIVE 1 /* indicates an active stem */ |
||||
#define T1_HINT_FLAG_MIN_BORDER 2 /* unused for now.. */ |
||||
#define T1_HINT_FLAG_MAX_BORDER 4 /* unused for now.. */ |
||||
|
||||
|
||||
/* hinter's configuration constants */ |
||||
#define T1_HINTER_MAX_BLUES 24 /* maximum number of blue zones */ |
||||
#define T1_HINTER_MAX_SNAPS 16 /* maximum number of stem snap zones */ |
||||
#define T1_HINTER_MAX_EDGES 64 /* maximum number of stem hints */ |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Size_Hints |
||||
* |
||||
* <Description> |
||||
* A structure used to model the hinting information related to |
||||
* a size object |
||||
* |
||||
* <Fields> |
||||
* supress_overshoots :: a boolean flag to tell when overshoot |
||||
* supression should occur. |
||||
* |
||||
* num_blue_zones :: the total number of blue zones (top+bottom) |
||||
* num_bottom_zones :: the number of bottom zones |
||||
* |
||||
* blue_zones :: the blue zones table. bottom zones are |
||||
* stored first in the table, followed by |
||||
* all top zones |
||||
* |
||||
* num_stem_snapH :: number of horizontal stem snap zones |
||||
* stem_snapH :: horizontal stem snap zones |
||||
* |
||||
* num_stem_snapV :: number of vertical stem snap zones |
||||
* stem_snapV :: vertical stem snap zones |
||||
* |
||||
************************************************************************/ |
||||
|
||||
struct T1_Size_Hints_ |
||||
{ |
||||
T1_Bool supress_overshoots; |
||||
|
||||
T1_Int num_blue_zones; |
||||
T1_Int num_bottom_zones; |
||||
T1_Snap_Zone blue_zones[ T1_HINTER_MAX_BLUES ]; |
||||
|
||||
T1_Int num_snap_widths; |
||||
T1_Snap_Zone snap_widths[ T1_HINTER_MAX_SNAPS ]; |
||||
|
||||
T1_Int num_snap_heights; |
||||
T1_Snap_Zone snap_heights[ T1_HINTER_MAX_SNAPS ]; |
||||
}; |
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Stem_Table |
||||
* |
||||
* <Description> |
||||
* A simple structure used to model a set of stem hints in a |
||||
* single direction during the loading of a given glyph outline. |
||||
* Not all stem hints are active at a time. Moreover, stems must |
||||
* be sorted regularly |
||||
* |
||||
* <Fields> |
||||
* num_stems :: total number of stems in table |
||||
* num_active :: number of active stems in table |
||||
* |
||||
* stems :: the table of all stems |
||||
* sort :: a table of indices into the stems table, used |
||||
* to keep a sorted list of the active stems |
||||
* |
||||
************************************************************************/ |
||||
|
||||
typedef struct T1_Stem_Table_ |
||||
{ |
||||
T1_Int num_stems; |
||||
T1_Int num_active; |
||||
|
||||
T1_Stem_Hint stems[ T1_HINTER_MAX_EDGES ]; |
||||
T1_Int sort [ T1_HINTER_MAX_EDGES ]; |
||||
|
||||
} T1_Stem_Table; |
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Struct> |
||||
* T1_Glyph_Hints |
||||
* |
||||
* <Description> |
||||
* A structure used to model the stem hints of a given glyph outline |
||||
* during glyph loading.
|
||||
* |
||||
* <Fields> |
||||
* hori_stems :: horizontal stem hints table |
||||
* vert_stems :: vertical stem hints table |
||||
* |
||||
************************************************************************/ |
||||
|
||||
struct T1_Glyph_Hints_ |
||||
{ |
||||
T1_Stem_Table hori_stems; |
||||
T1_Stem_Table vert_stems; |
||||
}; |
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Data> |
||||
* t1_hinter_funcs |
||||
* |
||||
* <Description> |
||||
* A table containing the address of various functions used during |
||||
* the loading of an hinted scaled outline |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
const T1_Hinter_Funcs t1_hinter_funcs; |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_New_Size_Hinter |
||||
* |
||||
* <Description> |
||||
* Allocates a new hinter structure for a given size object |
||||
* |
||||
* <Input> |
||||
* size :: handle to target size object |
||||
* |
||||
* <Return> |
||||
* Error code. 0 means success |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
T1_Error T1_New_Size_Hinter( T1_Size size ); |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_Done_Size_Hinter |
||||
* |
||||
* <Description> |
||||
* Releases a given size object's hinter structure |
||||
* |
||||
* <Input> |
||||
* size :: handle to target size object |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
void T1_Done_Size_Hinter( T1_Size size ); |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_Reset_Size_Hinter |
||||
* |
||||
* <Description> |
||||
* Recomputes hinting information when a given size object has |
||||
* changed its resolutions/char sizes/pixel sizes |
||||
* |
||||
* <Input> |
||||
* size :: handle to size object |
||||
* |
||||
* <Return> |
||||
* Error code. 0 means success |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
T1_Error T1_Reset_Size_Hinter( T1_Size size ); |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_New_Glyph_Hinter |
||||
* |
||||
* <Description> |
||||
* Allocates a new hinter structure for a given glyph slot |
||||
* |
||||
* <Input> |
||||
* glyph :: handle to target glyph slot |
||||
* |
||||
* <Return> |
||||
* Error code. 0 means success |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
T1_Error T1_New_Glyph_Hinter( T1_GlyphSlot glyph ); |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_Done_Glyph_Hinter |
||||
* |
||||
* <Description> |
||||
* Releases a given glyph slot's hinter structure |
||||
* |
||||
* <Input> |
||||
* glyph :: handle to glyph slot |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
void T1_Done_Glyph_Hinter( T1_GlyphSlot glyph ); |
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_Hint_Points |
||||
* |
||||
* <Description> |
||||
* this function grid-fits several points in a given Type 1 builder |
||||
* at once.
|
||||
* |
||||
* <Input> |
||||
* builder :: handle to target Type 1 builder |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
void T1_Hint_Points( T1_Builder* builder ); |
||||
|
||||
|
||||
/************************************************************************
|
||||
* |
||||
* <Function> |
||||
* T1_Hint_Stems |
||||
* |
||||
* <Description> |
||||
* This function is used to compute the location of each stem hint |
||||
* between the first and second passes of the glyph loader on the |
||||
* charstring. |
||||
* |
||||
* <Input> |
||||
* builder :: handle to target builder |
||||
* |
||||
************************************************************************/ |
||||
|
||||
LOCAL_DEF |
||||
void T1_Hint_Stems( T1_Builder* builder ); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
|
||||
#endif /* T1HINTER_H */ |
Loading…
Reference in new issue