| Index: src/autofit/afcjk.c
|
| diff --git a/src/autofit/afcjk.c b/src/autofit/afcjk.c
|
| index 8e407c86cee8c9ba27ade5bb8499805b500bd42f..f69a528e3b7a8a0bd6f36304a133b6ac5121188d 100644
|
| --- a/src/autofit/afcjk.c
|
| +++ b/src/autofit/afcjk.c
|
| @@ -4,7 +4,7 @@
|
| /* */
|
| /* Auto-fitter hinting routines for CJK script (body). */
|
| /* */
|
| -/* Copyright 2006-2012 by */
|
| +/* Copyright 2006-2013 by */
|
| /* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
| /* */
|
| /* This file is part of the FreeType project, and may only be used, */
|
| @@ -67,8 +67,7 @@
|
|
|
| FT_LOCAL_DEF( void )
|
| af_cjk_metrics_init_widths( AF_CJKMetrics metrics,
|
| - FT_Face face,
|
| - FT_ULong charcode )
|
| + FT_Face face )
|
| {
|
| /* scan the array of segments in each direction */
|
| AF_GlyphHintsRec hints[1];
|
| @@ -87,7 +86,8 @@
|
| AF_Scaler scaler = &dummy->root.scaler;
|
|
|
|
|
| - glyph_index = FT_Get_Char_Index( face, charcode );
|
| + glyph_index = FT_Get_Char_Index( face,
|
| + metrics->root.clazz->standard_char );
|
| if ( glyph_index == 0 )
|
| goto Exit;
|
|
|
| @@ -150,7 +150,10 @@
|
| }
|
| }
|
|
|
| - af_sort_widths( num_widths, axis->widths );
|
| + /* this also replaces multiple almost identical stem widths */
|
| + /* with a single one (the value 100 is heuristic) */
|
| + af_sort_and_quantize_widths( &num_widths, axis->widths,
|
| + dummy->units_per_em / 100 );
|
| axis->width_count = num_widths;
|
| }
|
|
|
| @@ -478,7 +481,8 @@
|
| FT_Bool under_ref = FT_BOOL( shoot < ref );
|
|
|
|
|
| - if ( (AF_CJK_BLUE_TOP == bb || AF_CJK_BLUE_RIGHT == bb) ^ under_ref )
|
| + if ( ( AF_CJK_BLUE_TOP == bb ||
|
| + AF_CJK_BLUE_RIGHT == bb ) ^ under_ref )
|
| *blue_shoot = *blue_ref = ( shoot + ref ) / 2;
|
| }
|
|
|
| @@ -556,14 +560,14 @@
|
| face->charmap = NULL;
|
| else
|
| {
|
| - af_cjk_metrics_init_widths( metrics, face, 0x7530 );
|
| + af_cjk_metrics_init_widths( metrics, face );
|
| af_cjk_metrics_init_blues( metrics, face, af_cjk_hani_blue_chars );
|
| af_cjk_metrics_check_digits( metrics, face );
|
| }
|
|
|
| FT_Set_Charmap( face, oldmap );
|
|
|
| - return AF_Err_Ok;
|
| + return FT_Err_Ok;
|
| }
|
|
|
|
|
| @@ -699,7 +703,7 @@
|
| {
|
| AF_Point pt = seg->first;
|
| AF_Point last = seg->last;
|
| - AF_Flags f0 = (AF_Flags)(pt->flags & AF_FLAG_CONTROL);
|
| + AF_Flags f0 = (AF_Flags)( pt->flags & AF_FLAG_CONTROL );
|
| AF_Flags f1;
|
|
|
|
|
| @@ -708,7 +712,7 @@
|
| for ( ; pt != last; f0 = f1 )
|
| {
|
| pt = pt->next;
|
| - f1 = (AF_Flags)(pt->flags & AF_FLAG_CONTROL);
|
| + f1 = (AF_Flags)( pt->flags & AF_FLAG_CONTROL );
|
|
|
| if ( !f0 && !f1 )
|
| break;
|
| @@ -718,7 +722,7 @@
|
| }
|
| }
|
|
|
| - return AF_Err_Ok;
|
| + return FT_Err_Ok;
|
| }
|
|
|
|
|
| @@ -892,7 +896,7 @@
|
| AF_Dimension dim )
|
| {
|
| AF_AxisHints axis = &hints->axis[dim];
|
| - FT_Error error = AF_Err_Ok;
|
| + FT_Error error = FT_Err_Ok;
|
| FT_Memory memory = hints->memory;
|
| AF_CJKAxis laxis = &((AF_CJKMetrics)hints->metrics)->axis[dim];
|
|
|
| @@ -962,14 +966,15 @@
|
| /* can make a single edge. */
|
| if ( link )
|
| {
|
| - AF_Segment seg1 = edge->first;
|
| - AF_Segment link1;
|
| + AF_Segment seg1 = edge->first;
|
| FT_Pos dist2 = 0;
|
|
|
|
|
| do
|
| {
|
| - link1 = seg1->link;
|
| + AF_Segment link1 = seg1->link;
|
| +
|
| +
|
| if ( link1 )
|
| {
|
| dist2 = AF_SEGMENT_DIST( link, link1 );
|
| @@ -2190,6 +2195,7 @@
|
|
|
| static const AF_Script_UniRangeRec af_cjk_uniranges[] =
|
| {
|
| + AF_UNIRANGE_REC( 0x1100UL, 0x11FFUL ), /* Hangul Jamo */
|
| AF_UNIRANGE_REC( 0x2E80UL, 0x2EFFUL ), /* CJK Radicals Supplement */
|
| AF_UNIRANGE_REC( 0x2F00UL, 0x2FDFUL ), /* Kangxi Radicals */
|
| AF_UNIRANGE_REC( 0x2FF0UL, 0x2FFFUL ), /* Ideographic Description Characters */
|
| @@ -2228,6 +2234,7 @@
|
| AF_DEFINE_SCRIPT_CLASS( af_cjk_script_class,
|
| AF_SCRIPT_CJK,
|
| af_cjk_uniranges,
|
| + 0x7530, /* 田 */
|
|
|
| sizeof ( AF_CJKMetricsRec ),
|
|
|
| @@ -2250,6 +2257,7 @@
|
| AF_DEFINE_SCRIPT_CLASS( af_cjk_script_class,
|
| AF_SCRIPT_CJK,
|
| af_cjk_uniranges,
|
| + 0,
|
|
|
| sizeof ( AF_CJKMetricsRec ),
|
|
|
|
|