summaryrefslogtreecommitdiff
path: root/src/autohint
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2003-05-03 20:13:48 +0000
committerWerner Lemberg <wl@gnu.org>2003-05-03 20:13:48 +0000
commit110fc56beadee6a9414edff34222a54555b3a490 (patch)
treec4785bb84c8ac5050155710727c8bd032e032815 /src/autohint
parentc6f1c1022253fe6517f978a1fe881712ee95476b (diff)
downloadfreetype2-110fc56beadee6a9414edff34222a54555b3a490.tar.gz
* src/autohint/ahoptim.c (LOG): Renamed to...
(AH_OPTIM_LOG): This. (AH_Dump_Springs): Fix log message format. * src/autohint/ahhint.c (ah_hint_edges_3): Renamed to... (ah_hint_edges): This.
Diffstat (limited to 'src/autohint')
-rw-r--r--src/autohint/ahhint.c122
-rw-r--r--src/autohint/ahoptim.c69
-rw-r--r--src/autohint/ahtypes.h62
-rw-r--r--src/autohint/rules.mk12
4 files changed, 138 insertions, 127 deletions
diff --git a/src/autohint/ahhint.c b/src/autohint/ahhint.c
index 9585d4ca0..c17234034 100644
--- a/src/autohint/ahhint.c
+++ b/src/autohint/ahhint.c
@@ -27,11 +27,12 @@
#include FT_OUTLINE_H
-#define FACE_GLOBALS( face ) ((AH_Face_Globals)(face)->autohint.data)
+#define FACE_GLOBALS( face ) ( (AH_Face_Globals)(face)->autohint.data )
#define AH_USE_IUP
#define OPTIM_STEM_SNAP
+
/*************************************************************************/
/*************************************************************************/
/**** ****/
@@ -70,7 +71,7 @@
}
}
- scaled = (reference+32) & -64;
+ scaled = ( reference + 32 ) & -64;
if ( width >= reference )
{
@@ -116,7 +117,7 @@
else if ( ( vertical && !hinter->do_vert_snapping ) ||
( !vertical && !hinter->do_horz_snapping ) )
{
- /* smooth hinting process, very lightly quantize the stem width */
+ /* smooth hinting process: very lightly quantize the stem width */
/* */
/* leave the widths of serifs alone */
@@ -150,8 +151,8 @@
if ( dist < 3 * 64 )
{
- delta = ( dist & 63 );
- dist &= -64;
+ delta = dist & 63;
+ dist &= -64;
if ( delta < 10 )
dist += delta;
@@ -171,7 +172,7 @@
}
else
{
- /* strong hinting process, snap the stem width to integer pixels */
+ /* strong hinting process: snap the stem width to integer pixels */
/* */
if ( vertical )
{
@@ -186,7 +187,7 @@
}
else
{
- dist = ah_snap_width( globals->widths, globals->num_widths, dist );
+ dist = ah_snap_width( globals->widths, globals->num_widths, dist );
if ( hinter->flags & AH_HINTER_MONOCHROME )
{
@@ -208,7 +209,7 @@
else if ( dist < 128 )
dist = ( dist + 22 ) & -64;
else
- /* XXX: round otherwise, prevent color fringes in LCD mode */
+ /* XXX: round otherwise to prevent color fringes in LCD mode */
dist = ( dist + 32 ) & -64;
}
}
@@ -246,7 +247,7 @@
else if ( ( vertical && !hinter->do_vert_snapping ) ||
( !vertical && !hinter->do_horz_snapping ) )
{
- /* smooth hinting process, very lightly quantize the stem width */
+ /* smooth hinting process: very lightly quantize the stem width */
/* */
if ( dist < 64 )
dist = 64;
@@ -267,8 +268,8 @@
if ( dist < 3 * 64 )
{
- delta = ( dist & 63 );
- dist &= -64;
+ delta = dist & 63;
+ dist &= -64;
if ( delta < 10 )
dist += delta;
@@ -288,7 +289,7 @@
}
else
{
- /* strong hinting process, snap the stem width to integer pixels */
+ /* strong hinting process: snap the stem width to integer pixels */
/* */
if ( vertical )
{
@@ -303,7 +304,7 @@
}
else
{
- dist = ah_snap_width( globals->widths, globals->num_widths, dist );
+ dist = ah_snap_width( globals->widths, globals->num_widths, dist );
if ( hinter->flags & AH_HINTER_MONOCHROME )
{
@@ -325,7 +326,7 @@
else if ( dist < 128 )
dist = ( dist + 22 ) & -64;
else
- /* XXX: round otherwise, prevent color fringes in LCD mode */
+ /* XXX: round otherwise to prevent color fringes in LCD mode */
dist = ( dist + 32 ) & -64;
}
}
@@ -357,6 +358,7 @@
base_edge->flags,
stem_edge->flags );
+
stem_edge->pos = base_edge->pos + fitted_width;
#else
@@ -381,6 +383,7 @@
FT_UNUSED( hinter );
FT_UNUSED( vertical );
+
dist = serif->opos - base->opos;
if ( dist < 0 )
{
@@ -388,15 +391,16 @@
sign = -1;
}
- /* do not touch serifs widths !! */
#if 0
+ /* do not touch serifs widths! */
if ( base->flags & AH_EDGE_DONE )
{
if ( dist >= 64 )
- dist = (dist+8) & -64;
+ dist = ( dist + 8 ) & -64;
else if ( dist <= 32 && !vertical )
dist = ( dist + 33 ) >> 1;
+
else
dist = 0;
}
@@ -417,9 +421,8 @@
/*************************************************************************/
- /* Another alternative edge hinting algorithm */
static void
- ah_hint_edges_3( AH_Hinter hinter )
+ ah_hint_edges( AH_Hinter hinter )
{
AH_Edge edges;
AH_Edge edge_limit;
@@ -464,7 +467,7 @@
{
edge1 = edge;
}
- else if (edge2 && edge2->blue_edge)
+ else if ( edge2 && edge2->blue_edge )
{
blue = edge2->blue_edge;
edge1 = edge2;
@@ -488,8 +491,8 @@
}
}
- /* now, we will align all stem edges, trying to maintain the */
- /* relative order of stems in the glyph.. */
+ /* now we will align all stem edges, trying to maintain the */
+ /* relative order of stems in the glyph */
for ( edge = edges; edge < edge_limit; edge++ )
{
AH_EdgeRec* edge2;
@@ -506,12 +509,11 @@
continue;
}
- /* now, align the stem */
+ /* now align the stem */
- /* this should not happen, but it's better to be safe. */
+ /* this should not happen, but it's better to be safe */
if ( edge2->blue_edge || edge2 < edge )
{
-
ah_align_linked_edge( hinter, edge2, edge, dimension );
edge->flags |= AH_EDGE_DONE;
continue;
@@ -522,14 +524,15 @@
#ifdef FT_CONFIG_CHESTER_STEM
- FT_Pos org_len, org_center, cur_len;
- FT_Pos cur_pos1, error1, error2, u_off, d_off;
+ FT_Pos org_len, org_center, cur_len;
+ FT_Pos cur_pos1, error1, error2, u_off, d_off;
- org_len = edge2->opos - edge->opos;
- cur_len = ah_compute_stem_width( hinter, dimension, org_len,
- edge->flags, edge2->flags );
- if (cur_len <= 64 )
+ org_len = edge2->opos - edge->opos;
+ cur_len = ah_compute_stem_width( hinter, dimension, org_len,
+ edge->flags, edge2->flags );
+
+ if ( cur_len <= 64 )
u_off = d_off = 32;
else
{
@@ -563,7 +566,7 @@
else
edge->pos = ( edge->opos + 32 ) & -64;
- anchor = edge;
+ anchor = edge;
edge->flags |= AH_EDGE_DONE;
@@ -583,23 +586,23 @@
}
else
{
- FT_Pos org_pos, org_len, org_center, cur_len;
- FT_Pos cur_pos1, cur_pos2, delta1, delta2;
+ FT_Pos org_pos, org_len, org_center, cur_len;
+ FT_Pos cur_pos1, cur_pos2, delta1, delta2;
- org_pos = anchor->pos + (edge->opos - anchor->opos);
+ org_pos = anchor->pos + ( edge->opos - anchor->opos );
org_len = edge2->opos - edge->opos;
org_center = org_pos + ( org_len >> 1 );
#ifdef FT_CONFIG_CHESTER_SERIF
- cur_len = ah_compute_stem_width( hinter, dimension, org_len,
- edge->flags, edge2->flags );
+ cur_len = ah_compute_stem_width( hinter, dimension, org_len,
+ edge->flags, edge2->flags );
#else /* !FT_CONFIG_CHESTER_SERIF */
- cur_len = ah_compute_stem_width( hinter, dimension, org_len );
+ cur_len = ah_compute_stem_width( hinter, dimension, org_len );
#endif /* !FT_CONFIG_CHESTER_SERIF */
@@ -610,7 +613,7 @@
FT_Pos u_off, d_off;
- cur_pos1 = ( org_center + 32 ) & -64;
+ cur_pos1 = ( org_center + 32 ) & -64;
if (cur_len <= 64 )
u_off = d_off = 32;
@@ -620,11 +623,11 @@
d_off = 26;
}
- delta1 = org_center - (cur_pos1 - u_off);
+ delta1 = org_center - ( cur_pos1 - u_off );
if ( delta1 < 0 )
delta1 = -delta1;
- delta2 = org_center - (cur_pos1 + d_off);
+ delta2 = org_center - ( cur_pos1 + d_off );
if ( delta2 < 0 )
delta2 = -delta2;
@@ -638,8 +641,7 @@
}
else
{
-
- org_pos = anchor->pos + (edge->opos - anchor->opos);
+ org_pos = anchor->pos + ( edge->opos - anchor->opos );
org_len = edge2->opos - edge->opos;
org_center = org_pos + ( org_len >> 1 );
@@ -688,8 +690,8 @@
if ( !has_serifs )
goto Next_Dimension;
- /* now, hint the remaining edges (serifs and single) in order */
- /* to complete our processing */
+ /* now hint the remaining edges (serifs and single) in order */
+ /* to complete our processing */
for ( edge = edges; edge < edge_limit; edge++ )
{
if ( edge->flags & AH_EDGE_DONE )
@@ -731,7 +733,7 @@
/* reduce the problem of the disappearing eye in the `e' of Times... */
/* also, creates some artifacts near the blue zones? */
{
- ah_hint_edges_3( hinter );
+ ah_hint_edges( hinter );
}
}
@@ -807,6 +809,7 @@
/* hint the strong points -- this is equivalent to the TrueType `IP' */
+ /* hinting instruction */
static void
ah_hinter_align_strong_points( AH_Hinter hinter )
{
@@ -872,7 +875,7 @@
goto Store_Point;
}
- /* is the point after the last edge ? */
+ /* is the point after the last edge? */
edge = edge_limit - 1;
delta = u - edge->fpos;
if ( delta >= 0 )
@@ -1023,6 +1026,7 @@
/* interpolate weak points -- this is equivalent to the TrueType `IUP' */
+ /* hinting instruction */
static void
ah_hinter_align_weak_points( AH_Hinter hinter )
{
@@ -1163,8 +1167,8 @@
{
FT_Int n;
AH_Face_Globals globals = hinter->globals;
- AH_Globals design = &globals->design;
- AH_Globals scaled = &globals->scaled;
+ AH_Globals design = &globals->design;
+ AH_Globals scaled = &globals->scaled;
/* copy content */
@@ -1233,7 +1237,7 @@
ah_outline_done( hinter->glyph );
/* note: the `globals' pointer is _not_ owned by the hinter */
- /* but by the current face object, we don't need to */
+ /* but by the current face object; we don't need to */
/* release it */
hinter->globals = 0;
hinter->face = 0;
@@ -1382,8 +1386,8 @@
}
}
- /* copy the outline points in the loader's current */
- /* extra points, which is used to keep original glyph coordinates */
+ /* copy the outline points in the loader's current */
+ /* extra points which is used to keep original glyph coordinates */
error = ah_loader_check_points( gloader, slot->outline.n_points + 2,
slot->outline.n_contours );
if ( error )
@@ -1411,8 +1415,8 @@
if ( slot->outline.n_points == 0 )
goto Hint_Metrics;
- /* now, load the slot image into the auto-outline, and run the */
- /* automatic hinting process */
+ /* now load the slot image into the auto-outline and run the */
+ /* automatic hinting process */
error = ah_outline_load( outline, x_scale, y_scale, face );
if ( error )
goto Exit;
@@ -1560,7 +1564,7 @@
l += num_base_points;
- /* for now, only use the current point coordinates */
+ /* for now, only use the current point coordinates; */
/* we may consider another approach in the near future */
p1 = gloader->base.outline.points + start_point + k;
p2 = gloader->base.outline.points + start_point + l;
@@ -1605,8 +1609,8 @@
if ( hinter->transformed )
FT_Outline_Transform( &gloader->base.outline, &hinter->trans_matrix );
- /* we must translate our final outline by -pp1.x, and compute */
- /* the new metrics */
+ /* we must translate our final outline by -pp1.x and compute */
+ /* the new metrics */
if ( hinter->pp1.x )
FT_Outline_Translate( &gloader->base.outline, -hinter->pp1.x, 0 );
@@ -1621,8 +1625,8 @@
slot->metrics.horiBearingX = bbox.xMin;
slot->metrics.horiBearingY = bbox.yMax;
- /* for mono-width fonts (like Andale, Courier, etc.), we need */
- /* to keep the original rounded advance width */
+ /* for mono-width fonts (like Andale, Courier, etc.) we need */
+ /* to keep the original rounded advance width */
if ( !FT_IS_FIXED_WIDTH( slot->face ) )
slot->metrics.horiAdvance = hinter->pp2.x - hinter->pp1.x;
else
@@ -1663,7 +1667,7 @@
FT_Fixed x_scale = size->metrics.x_scale;
FT_Fixed y_scale = size->metrics.y_scale;
AH_Face_Globals face_globals = FACE_GLOBALS( face );
- FT_Render_Mode hint_mode = FT_LOAD_TARGET_MODE(load_flags);
+ FT_Render_Mode hint_mode = FT_LOAD_TARGET_MODE( load_flags );
/* first of all, we need to check that we're using the correct face and */
diff --git a/src/autohint/ahoptim.c b/src/autohint/ahoptim.c
index 8d10f4a4d..2c2c8581f 100644
--- a/src/autohint/ahoptim.c
+++ b/src/autohint/ahoptim.c
@@ -4,7 +4,7 @@
/* */
/* FreeType auto hinting outline optimization (body). */
/* */
-/* Copyright 2000-2001, 2002 Catharon Productions Inc. */
+/* Copyright 2000-2001, 2002, 2003 Catharon Productions Inc. */
/* Author: David Turner */
/* */
/* This file is part of the Catharon Typography Project and shall only */
@@ -21,9 +21,9 @@
/*************************************************************************/
/* */
- /* This module is in charge of optimising the outlines produced by the */
+ /* This module is in charge of optimizing the outlines produced by the */
/* auto-hinter in direct mode. This is required at small pixel sizes in */
- /* order to ensure coherent spacing, among other things.. */
+ /* order to ensure coherent spacing, among other things. */
/* */
/* The technique used in this module is a simplified simulated */
/* annealing. */
@@ -42,17 +42,17 @@
#define AH_BRUTE_FORCE
-#define xxxAH_DEBUG_OPTIM
+#define xxAH_DEBUG_OPTIM
-#undef LOG
+#undef AH_OPTIM_LOG
#ifdef AH_DEBUG_OPTIM
-#define LOG( x ) optim_log ## x
+#define AH_OPTIM_LOG( x ) optim_log ## x
#else
-#define LOG( x )
+#define AH_OPTIM_LOG( x ) do ; while ( 0 ) /* nothing */
#endif /* AH_DEBUG_OPTIM */
@@ -87,13 +87,13 @@
stem = optimizer->stems;
for ( n = 0; n < optimizer->num_stems; n++, stem++ )
{
- LOG(( " %c%2d [%.1f:%.1f]={%.1f:%.1f}="
- "<%1.f..%1.f> force=%.1f speed=%.1f\n",
- optimizer->vertical ? 'V' : 'H', n,
- FLOAT( stem->edge1->opos ), FLOAT( stem->edge2->opos ),
- FLOAT( stem->edge1->pos ), FLOAT( stem->edge2->pos ),
- FLOAT( stem->min_pos ), FLOAT( stem->max_pos ),
- FLOAT( stem->force ), FLOAT( stem->velocity ) ));
+ AH_OPTIM_LOG(( " %c%2d [%.1f:%.1f]={%.1f:%.1f}="
+ "<%1.f..%1.f> force=%.1f speed=%.1f\n",
+ optimizer->vertical ? 'V' : 'H', n,
+ FLOAT( stem->edge1->opos ), FLOAT( stem->edge2->opos ),
+ FLOAT( stem->edge1->pos ), FLOAT( stem->edge2->pos ),
+ FLOAT( stem->min_pos ), FLOAT( stem->max_pos ),
+ FLOAT( stem->force ), FLOAT( stem->velocity ) ));
}
}
@@ -108,11 +108,11 @@
stem = optimizer->stems;
for ( n = 0; n < optimizer->num_stems; n++, stem++ )
{
- LOG(( " %c%2d [%.1f]=<%1.f..%1.f> force=%.1f speed=%.1f\n",
- optimizer->vertical ? 'V' : 'H', n,
- FLOAT( stem->pos ),
- FLOAT( stem->min_pos ), FLOAT( stem->max_pos ),
- FLOAT( stem->force ), FLOAT( stem->velocity ) ));
+ AH_OPTIM_LOG(( " %c%2d [%.1f]=<%1.f..%1.f> force=%.1f speed=%.1f\n",
+ optimizer->vertical ? 'V' : 'H', n,
+ FLOAT( stem->pos ),
+ FLOAT( stem->min_pos ), FLOAT( stem->max_pos ),
+ FLOAT( stem->force ), FLOAT( stem->velocity ) ));
}
}
@@ -127,19 +127,19 @@
spring = optimizer->springs;
stems = optimizer->stems;
- LOG(( "%cSprings ", optimizer->vertical ? 'V' : 'H' ));
+ AH_OPTIM_LOG(( "%cSprings ", optimizer->vertical ? 'V' : 'H' ));
for ( n = 0; n < optimizer->num_springs; n++, spring++ )
{
- LOG(( " [%d-%d:%.1f:%1.f:%.1f]",
- spring->stem1 - stems, spring->stem2 - stems,
- FLOAT( spring->owidth ),
- FLOAT( spring->stem2->pos -
- ( spring->stem1->pos + spring->stem1->width ) ),
- FLOAT( spring->tension ) ));
+ AH_OPTIM_LOG(( " [%d-%d:%.1f:%1.f:%.1f]\n",
+ spring->stem1 - stems, spring->stem2 - stems,
+ FLOAT( spring->owidth ),
+ FLOAT( spring->stem2->pos -
+ ( spring->stem1->pos + spring->stem1->width ) ),
+ FLOAT( spring->tension ) ));
}
- LOG(( "\n" ));
+ AH_OPTIM_LOG(( "\n" ));
}
#endif /* AH_DEBUG_OPTIM */
@@ -600,7 +600,8 @@
{
AH_Stem* stem1 = spring->stem1;
AH_Stem* stem2 = spring->stem2;
- FT_Pos width;
+ FT_Pos width;
+
width = stem2->pos - ( stem1->pos + stem1->width );
width -= spring->owidth;
@@ -625,13 +626,13 @@
distortion = optim_compute_distortion( optimizer );
- LOG(( "config distortion = %.1f ", FLOAT( distortion * 64 ) ));
+ AH_OPTIM_LOG(( "config distortion = %.1f ", FLOAT( distortion * 64 ) ));
/* check that we really need to add this configuration to our */
/* sorted history */
if ( limit > configs && limit[-1].distortion < distortion )
{
- LOG(( "ejected\n" ));
+ AH_OPTIM_LOG(( "ejected\n" ));
return;
}
@@ -664,7 +665,7 @@
config[0] = config[1];
config[1] = temp;
}
- LOG(( "recorded!\n" ));
+ AH_OPTIM_LOG(( "recorded!\n" ));
}
@@ -818,7 +819,7 @@
optimizer->outline = outline;
optimizer->memory = memory;
- LOG(( "initializing new optimizer\n" ));
+ AH_OPTIM_LOG(( "initializing new optimizer\n" ));
/* compute stems and springs */
error = optim_compute_stems ( optimizer ) ||
optim_compute_springs( optimizer );
@@ -862,7 +863,7 @@
if ( optimizer->num_springs > 0 )
{
- LOG(( "horizontal optimization ------------------------\n" ));
+ AH_OPTIM_LOG(( "horizontal optimization ------------------------\n" ));
optim_compute( optimizer );
}
@@ -873,7 +874,7 @@
if ( optimizer->num_springs )
{
- LOG(( "vertical optimization --------------------------\n" ));
+ AH_OPTIM_LOG(( "vertical optimization --------------------------\n" ));
optim_compute( optimizer );
}
}
diff --git a/src/autohint/ahtypes.h b/src/autohint/ahtypes.h
index d004ed4cc..07ec37d92 100644
--- a/src/autohint/ahtypes.h
+++ b/src/autohint/ahtypes.h
@@ -251,9 +251,9 @@ FT_BEGIN_HEADER
/* contour :: A pointer to the first point of the segment's */
/* contour. */
/* */
- /* pos :: The segment position in font units. */
+ /* min_coord :: The minimum coordinate of the segment. */
/* */
- /* size :: The segment size. */
+ /* max_coord :: The maximum coordinate of the segment. */
/* */
/* edge :: The edge of the current segment. */
/* */
@@ -320,12 +320,12 @@ FT_BEGIN_HEADER
/* */
/* serif :: The serif edge. */
/* */
- /* num_paired :: The number of other edges that pair to this one. */
+ /* num_linked :: The number of other edges that pair to this one. */
/* */
/* score :: Used to score the edge when selecting them. */
/* */
/* blue_edge :: Indicate the blue zone edge this edge is related to. */
- /* Only set for some of the horizontal edges in a Latin */
+ /* Only set for some of the horizontal edges in a latin */
/* font. */
/* */
typedef struct AH_EdgeRec_
@@ -368,7 +368,7 @@ FT_BEGIN_HEADER
FT_Int max_contours;
FT_Int num_contours;
- AH_Point * contours;
+ AH_Point* contours;
FT_Int num_hedges;
AH_Edge horz_edges;
@@ -399,7 +399,7 @@ FT_BEGIN_HEADER
#define AH_BLUE_CAPITAL_TOP 0 /* THEZOCQS */
#define AH_BLUE_CAPITAL_BOTTOM ( AH_BLUE_CAPITAL_TOP + 1 ) /* HEZLOCUS */
-#define AH_BLUE_SMALL_TOP ( AH_BLUE_CAPITAL_BOTTOM + 1) /* xzroesc */
+#define AH_BLUE_SMALL_TOP ( AH_BLUE_CAPITAL_BOTTOM + 1 ) /* xzroesc */
#define AH_BLUE_SMALL_BOTTOM ( AH_BLUE_SMALL_TOP + 1 ) /* xzroesc */
#define AH_BLUE_SMALL_MINOR ( AH_BLUE_SMALL_BOTTOM + 1 ) /* pqgjy */
#define AH_BLUE_MAX ( AH_BLUE_SMALL_MINOR + 1 )
@@ -429,6 +429,9 @@ FT_BEGIN_HEADER
/* */
/* num_heights :: The number of heights. */
/* */
+ /* stds :: A two-element array giving the default stem width */
+ /* and height. */
+ /* */
/* widths :: Snap widths, including standard one. */
/* */
/* heights :: Snap height, including standard one. */
@@ -474,6 +477,9 @@ FT_BEGIN_HEADER
/* */
/* y_scale :: The current vertical scale. */
/* */
+ /* control_overshoot :: */
+ /* Currently unused. */
+ /* */
typedef struct AH_Face_GlobalsRec_
{
FT_Face face;
@@ -486,39 +492,39 @@ FT_BEGIN_HEADER
} AH_Face_GlobalsRec, *AH_Face_Globals;
- typedef struct AH_HinterRec
+ typedef struct AH_HinterRec_
{
- FT_Memory memory;
- AH_Hinter_Flags flags;
+ FT_Memory memory;
+ AH_Hinter_Flags flags;
- FT_Int algorithm;
- FT_Face face;
+ FT_Int algorithm;
+ FT_Face face;
- AH_Face_Globals globals;
+ AH_Face_Globals globals;
- AH_Outline glyph;
+ AH_Outline glyph;
- AH_Loader loader;
- FT_Vector pp1;
- FT_Vector pp2;
+ AH_Loader loader;
+ FT_Vector pp1;
+ FT_Vector pp2;
- FT_Bool transformed;
- FT_Vector trans_delta;
- FT_Matrix trans_matrix;
+ FT_Bool transformed;
+ FT_Vector trans_delta;
+ FT_Matrix trans_matrix;
- FT_Bool do_horz_hints; /* disable X hinting */
- FT_Bool do_vert_hints; /* disable Y hinting */
- FT_Bool do_horz_snapping; /* disable X stem size snapping */
- FT_Bool do_vert_snapping; /* disable Y stem size snapping */
- FT_Bool do_stem_adjust; /* disable light stem snapping */
+ FT_Bool do_horz_hints; /* disable X hinting */
+ FT_Bool do_vert_hints; /* disable Y hinting */
+ FT_Bool do_horz_snapping; /* disable X stem size snapping */
+ FT_Bool do_vert_snapping; /* disable Y stem size snapping */
+ FT_Bool do_stem_adjust; /* disable light stem snapping */
} AH_HinterRec, *AH_Hinter;
-#ifdef DEBUG_HINTER
- extern AH_Hinter ah_debug_hinter;
- extern FT_Bool ah_debug_disable_horz;
- extern FT_Bool ah_debug_disable_vert;
+#ifdef DEBUG_HINTER
+ extern AH_Hinter ah_debug_hinter;
+ extern FT_Bool ah_debug_disable_horz;
+ extern FT_Bool ah_debug_disable_vert;
#else
#define ah_debug_disable_horz 0
#define ah_debug_disable_vert 0
diff --git a/src/autohint/rules.mk b/src/autohint/rules.mk
index 6dcaa20d0..b70fcb58f 100644
--- a/src/autohint/rules.mk
+++ b/src/autohint/rules.mk
@@ -3,7 +3,7 @@
#
-# Copyright 2000, 2001 Catharon Productions Inc.
+# Copyright 2000, 2001, 2002 Catharon Productions Inc.
# Author: David Turner
#
# This file is part of the Catharon Typography Project and shall only
@@ -29,17 +29,17 @@ AUTO_COMPILE := $(FT_COMPILE) $I$(AUTO_DIR)
# AUTO driver sources (i.e., C files)
#
-AUTO_DRV_SRC := $(AUTO_DIR_)ahangles.c \
- $(AUTO_DIR_)ahglobal.c \
- $(AUTO_DIR_)ahglyph.c \
- $(AUTO_DIR_)ahhint.c \
+AUTO_DRV_SRC := $(AUTO_DIR_)ahangles.c \
+ $(AUTO_DIR_)ahglobal.c \
+ $(AUTO_DIR_)ahglyph.c \
+ $(AUTO_DIR_)ahhint.c \
$(AUTO_DIR_)ahmodule.c
# AUTO driver headers
#
AUTO_DRV_H := $(AUTO_DRV_SRC:%c=%h) \
$(AUTO_DIR_)ahloader.h \
- $(AUTO_DIR_)ahtypes.h \
+ $(AUTO_DIR_)ahtypes.h \
$(AUTO_DIR_)aherrors.h