forked from minhngoc25a/freetype2
removed obsolete hinter source code
This commit is contained in:
parent
95bec28220
commit
d16a4b8111
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