[autofit] Improve tracing of `latin' hinter.

* src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
zone types.
(af_latin_metrics_scale_dim): Report scaling changes due to x height
alignment.
Report scaled stroke width and blue zone values.
This commit is contained in:
Werner Lemberg 2013-10-12 10:33:04 +02:00
parent 2c56f2ab90
commit b6695243b7
2 changed files with 93 additions and 1 deletions

View File

@ -1,3 +1,13 @@
2013-10-12 Werner Lemberg <wl@gnu.org>
[autofit] Improve tracing of `latin' hinter.
* src/autofit/aflatin.c (af_latin_metrics_init_blues): Report blue
zone types.
(af_latin_metrics_scale_dim): Report scaling changes due to x height
alignment.
Report scaled stroke width and blue zone values.
2013-10-03 Dave Arnold <darnold@adobe.com>
* src/cff/cf2font.c (cf2_computeDarkening): Avoid division by zero.

View File

@ -232,7 +232,44 @@
FT_Pos* blue_shoot;
FT_TRACE5(( "blue zone %d:\n", axis->blue_count ));
#ifdef FT_DEBUG_LEVEL_TRACE
{
FT_Bool have_flag = 0;
FT_TRACE5(( "blue zone %d", axis->blue_count ));
if ( bs->properties )
{
FT_TRACE5(( " (" ));
if ( AF_LATIN_IS_TOP_BLUE( bs ) )
{
FT_TRACE5(( "top" ));
have_flag = 1;
}
if ( AF_LATIN_IS_SMALL_TOP_BLUE( bs ) )
{
if ( have_flag )
FT_TRACE5(( ", " ));
FT_TRACE5(( "small top" ));
have_flag = 1;
}
if ( AF_LATIN_IS_LONG_BLUE( bs ) )
{
if ( have_flag )
FT_TRACE5(( ", " ));
FT_TRACE5(( "long" ));
}
FT_TRACE5(( ")" ));
}
FT_TRACE5(( ":\n" ));
}
#endif /* FT_DEBUG_LEVEL_TRACE */
num_flats = 0;
num_rounds = 0;
@ -837,7 +874,20 @@
else
#endif
if ( dim == AF_DIMENSION_VERT )
{
scale = FT_MulDiv( scale, fitted, scaled );
FT_TRACE5((
"af_latin_metrics_scale_dim:"
" x height alignment (script `%s'):\n"
" "
" vertical scaling changed from %.4f to %.4f (by %d%%)\n"
"\n",
af_script_names[metrics->root.script_class->script],
axis->org_scale / 65536.0,
scale / 65536.0,
( fitted - scaled ) * 100 / scaled ));
}
}
}
}
@ -856,6 +906,10 @@
metrics->root.scaler.y_delta = delta;
}
FT_TRACE5(( "%s widths (script `%s')\n",
dim == AF_DIMENSION_HORZ ? "horizontal" : "vertical",
af_script_names[metrics->root.script_class->script] ));
/* scale the widths */
for ( nn = 0; nn < axis->width_count; nn++ )
{
@ -864,15 +918,30 @@
width->cur = FT_MulFix( width->org, scale );
width->fit = width->cur;
FT_TRACE5(( " %d scaled to %.2f\n",
width->org,
width->cur / 64.0 ));
}
FT_TRACE5(( "\n" ));
/* an extra-light axis corresponds to a standard width that is */
/* smaller than 5/8 pixels */
axis->extra_light =
(FT_Bool)( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
#ifdef FT_DEBUG_LEVEL_TRACE
if ( axis->extra_light )
FT_TRACE5(( "this font is extra light\n"
"\n" ));
#endif
if ( dim == AF_DIMENSION_VERT )
{
FT_TRACE5(( "blue zones (script `%s')\n",
af_script_names[metrics->root.script_class->script] ));
/* scale the blue zones */
for ( nn = 0; nn < axis->blue_count; nn++ )
{
@ -944,6 +1013,19 @@
#endif
blue->flags |= AF_LATIN_BLUE_ACTIVE;
FT_TRACE5(( " reference %d: %d scaled to %.2f%s\n"
" overshoot %d: %d scaled to %.2f%s\n",
nn,
blue->ref.org,
blue->ref.fit / 64.0,
blue->flags & AF_LATIN_BLUE_ACTIVE ? ""
: " (inactive)",
nn,
blue->shoot.org,
blue->shoot.fit / 64.0,
blue->flags & AF_LATIN_BLUE_ACTIVE ? ""
: " (inactive)" ));
}
}
}