ref: a48162759e7ffbdfe3c06ead5ab6863bbd1a1dab
parent: b38c15da098a5f2766fe5020b722ac0040c8c6d4
author: David Turner <[email protected]>
date: Mon Jun 11 16:35:54 EDT 2007
experimental auto-hinter updates
--- a/src/autofit/aflatin2.c
+++ b/src/autofit/aflatin2.c
@@ -1913,11 +1913,14 @@
org_left = org_pos + ((org_len - cur_len) >> 1);
org_right = org_pos + ((org_len + cur_len) >> 1);
+ AF_LOG(( "ALIGN: left=%.2f right=%.2f ", org_left/64.0, org_right/64.0 ));
cur_center = org_center;
if ( edge2->flags & AF_EDGE_DONE )
+ {
+ AF_LOG(( "\n" ));
edge->pos = edge2->pos - cur_len;
-
+ }
else
{
/* we want to compare several displacement, and choose
@@ -1929,11 +1932,17 @@
/* note: don't even try to fit tiny stems */
if ( cur_len < 32 )
+ {
+ AF_LOG(( "tiny stem\n" ));
goto AlignStem;
+ }
/* if the span is within a single pixel, don't touch it */
if ( FT_PIX_FLOOR(org_left) == FT_PIX_CEIL(org_right) )
+ {
+ AF_LOG(( "single pixel stem\n" ));
goto AlignStem;
+ }
if (cur_len <= 96)
{
@@ -1940,7 +1949,7 @@
/* we want to avoid the absolute worst case which is
* when the left and right edges of the span each represent
* about 50% of the gray. we'd better want to change this
- * to 20/80%, since this is much more pleasant to the eye with
+ * to 25/75%, since this is much more pleasant to the eye with
* very acceptable distortion
*/
FT_Pos frac_left = (org_left) & 63;
@@ -1950,16 +1959,18 @@
frac_right >= 22 && frac_right <= 42 )
{
org = frac_left;
- fit = (org <= 32) ? 13 : 51;
+ fit = (org <= 32) ? 16 : 48;
delta = FT_ABS(fit - org);
displacements[count] = fit - org;
scores[count++] = delta;
+ AF_LOG(( "dispA=%.2f (%d) ", (fit - org)/64.0, delta ));
org = frac_right;
- fit = (org <= 32) ? 13 : 51;
+ fit = (org <= 32) ? 16 : 48;
delta = FT_ABS(fit - org);
- displacement[count] = fit - org;
+ displacements[count] = fit - org;
scores[count++] = delta;
+ AF_LOG(( "dispB=%.2f (%d) ", (fit - org)/64.0, delta ));
}
}
@@ -1969,6 +1980,7 @@
delta = FT_ABS(fit - org);
displacements[count] = fit - org;
scores[count++] = delta;
+ AF_LOG(( "dispC=%.2f (%d) ", (fit - org)/64.0, delta ));
/* snapping the right edge to the grid */
org = org_right;
@@ -1976,6 +1988,7 @@
delta = FT_ABS(fit - org);
displacements[count] = fit - org;
scores[count++] = delta;
+ AF_LOG(( "dispD=%.2f (%d) ", (fit - org)/64.0, delta ));
/* now find the best displacement */
{
@@ -1994,6 +2007,7 @@
cur_center = org_center + best_disp;
}
+ AF_LOG(( "\n" ));
}
AlignStem:
@@ -2033,7 +2047,7 @@
/* We don't handle horizontal edges since we can't easily assure that */
/* the third (lowest) stem aligns with the base line; it might end up */
/* one pixel higher or lower. */
-
+#if 0
n_edges = edge_limit - edges;
if ( dim == AF_DIMENSION_HORZ && ( n_edges == 6 || n_edges == 12 ) )
{
@@ -2080,7 +2094,7 @@
edge3->link->flags |= AF_EDGE_DONE;
}
}
-
+#endif
if ( has_serifs || !anchor )
{
/*