|
|
|
@ -1,24 +1,20 @@ |
|
|
|
|
/*******************************************************************
|
|
|
|
|
* |
|
|
|
|
* 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.. |
|
|
|
|
* |
|
|
|
|
******************************************************************/ |
|
|
|
|
/***************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* t1hinter.h */ |
|
|
|
|
/* */ |
|
|
|
|
/* Type 1 hinter (body). */ |
|
|
|
|
/* */ |
|
|
|
|
/* 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 T1HINTER_H |
|
|
|
|
#define T1HINTER_H |
|
|
|
@ -31,29 +27,30 @@ |
|
|
|
|
#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_ |
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <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 an `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 :: The original position in font units. */ |
|
|
|
|
/* */ |
|
|
|
|
/* pix :: The current position in sub-pixel units. */ |
|
|
|
|
/* */ |
|
|
|
|
/* min :: The minimum boundary in sub-pixel units. */ |
|
|
|
|
/* */ |
|
|
|
|
/* max :: The maximum boundary in sub-pixel units. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef struct T1_Snap_Zone_ |
|
|
|
|
{ |
|
|
|
|
FT_Pos orus; |
|
|
|
|
FT_Pos pix; |
|
|
|
@ -63,21 +60,20 @@ |
|
|
|
|
} 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_ |
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <Struct> */ |
|
|
|
|
/* T1_Edge */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* A very simple structure used to model a stem edge. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Fields> */ |
|
|
|
|
/* orus :: The original edge position in font units. */ |
|
|
|
|
/* */ |
|
|
|
|
/* pix :: The scaled edge position in sub-pixel units. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef struct T1_Edge_ |
|
|
|
|
{ |
|
|
|
|
FT_Pos orus; |
|
|
|
|
FT_Pos pix; |
|
|
|
@ -85,26 +81,26 @@ |
|
|
|
|
} 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_ |
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <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 are coded in a weird way in the charstrings. */ |
|
|
|
|
/* */ |
|
|
|
|
typedef struct T1_Stem_Hint_ |
|
|
|
|
{ |
|
|
|
|
T1_Edge min_edge; |
|
|
|
|
T1_Edge max_edge; |
|
|
|
@ -114,109 +110,105 @@ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#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_ |
|
|
|
|
#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 whether 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_snap_widths :: The number of horizontal stem snap zones. */ |
|
|
|
|
/* */ |
|
|
|
|
/* snap_widths :: An array of horizontal stem snap zones. */ |
|
|
|
|
/* */ |
|
|
|
|
/* num_snap_heights :: The number of vertical stem snap zones. */ |
|
|
|
|
/* */ |
|
|
|
|
/* snap_heights :: An array of vertical stem snap zones. */ |
|
|
|
|
/* */ |
|
|
|
|
struct T1_Size_Hints_ |
|
|
|
|
{ |
|
|
|
|
FT_Bool supress_overshoots; |
|
|
|
|
|
|
|
|
|
FT_Int num_blue_zones; |
|
|
|
|
FT_Int num_bottom_zones; |
|
|
|
|
T1_Snap_Zone blue_zones[ T1_HINTER_MAX_BLUES ]; |
|
|
|
|
T1_Snap_Zone blue_zones[T1_HINTER_MAX_BLUES]; |
|
|
|
|
|
|
|
|
|
FT_Int num_snap_widths; |
|
|
|
|
T1_Snap_Zone snap_widths[ T1_HINTER_MAX_SNAPS ]; |
|
|
|
|
T1_Snap_Zone snap_widths[T1_HINTER_MAX_SNAPS]; |
|
|
|
|
|
|
|
|
|
FT_Int num_snap_heights; |
|
|
|
|
T1_Snap_Zone snap_heights[ T1_HINTER_MAX_SNAPS ]; |
|
|
|
|
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_ |
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <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 :: The total number of stems in the table. */ |
|
|
|
|
/* */ |
|
|
|
|
/* num_active :: The number of active stems in the table. */ |
|
|
|
|
/* */ |
|
|
|
|
/* stems :: A 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_ |
|
|
|
|
{ |
|
|
|
|
FT_Int num_stems; |
|
|
|
|
FT_Int num_active; |
|
|
|
|
|
|
|
|
|
T1_Stem_Hint stems[ T1_HINTER_MAX_EDGES ]; |
|
|
|
|
FT_Int sort [ T1_HINTER_MAX_EDGES ]; |
|
|
|
|
T1_Stem_Hint stems[T1_HINTER_MAX_EDGES]; |
|
|
|
|
FT_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 */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Description> */ |
|
|
|
|
/* A structure used to model the stem hints of a given glyph outline */ |
|
|
|
|
/* during glyph loading. */ |
|
|
|
|
/* */ |
|
|
|
|
/* <Fields> */ |
|
|
|
|
/* hori_stems :: The horizontal stem hints table. */ |
|
|
|
|
/* vert_stems :: The vertical stem hints table. */ |
|
|
|
|
/* */ |
|
|
|
|
struct T1_Glyph_Hints_ |
|
|
|
|
{ |
|
|
|
|
T1_Stem_Table hori_stems; |
|
|
|
@ -224,157 +216,48 @@ |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************
|
|
|
|
|
* |
|
|
|
|
* <Data> |
|
|
|
|
* t1_hinter_funcs |
|
|
|
|
* |
|
|
|
|
* <Description> |
|
|
|
|
* A table containing the address of various functions used during |
|
|
|
|
* the loading of an hinted scaled outline |
|
|
|
|
* |
|
|
|
|
************************************************************************/ |
|
|
|
|
|
|
|
|
|
/*************************************************************************/ |
|
|
|
|
/* */ |
|
|
|
|
/* <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 |
|
|
|
|
FT_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 |
|
|
|
|
* |
|
|
|
|
************************************************************************/ |
|
|
|
|
void T1_Done_Size_Hinter( T1_Size size ); |
|
|
|
|
|
|
|
|
|
LOCAL_DEF |
|
|
|
|
FT_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 |
|
|
|
|
FT_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 ); |
|
|
|
|
|
|
|
|
|
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 */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* END */ |
|
|
|
|