formatting

This commit is contained in:
Werner Lemberg 2007-02-25 21:06:43 +00:00
parent 601aefe4ec
commit de5e686661
3 changed files with 47 additions and 43 deletions

View File

@ -1,7 +1,7 @@
2007-02-21 David Turner <david@freetype.org>
* src/pshinter/pshalgo.c: fixed a bug in the hinting of small
and ghost stems in the Postscript interpreter
* src/pshinter/pshalgo.c (psh_hint_align): Fix a bug in the hinting
of small and ghost stems in the Postscript interpreter.
2007-02-20 suzuki toshiya <mpsuzuki@hiroshima-u.ac.jp>

View File

@ -283,7 +283,7 @@
kCFStringEncodingMacRoman );
ats_font_id = ATSFontFindFromName( cf_fontName,
kATSOptionFlagsUnRestrictedScope );
CFRelease(cf_fontName);
CFRelease( cf_fontName );
if ( ats_font_id == 0 || ats_font_id == 0xFFFFFFFFUL )
return FT_Err_Unknown_File_Format;

View File

@ -543,53 +543,57 @@
/* the stem is less than one pixel; we will center it
* around the nearest pixel center
*/
if (len >= 32)
if ( len >= 32 )
{
/* this is a special case where we also widen the stem
* and align it to the pixel grid.
*
* stem_center = pos + (len/2)
* nearest_pixel_center = FT_ROUND(stem_center-32)+32
* new_pos = nearest_pixel_center-32
* = FT_ROUND(stem_center-32)
* = FT_FLOOR(stem_center-32+32)
* = FT_FLOOR(stem_center)
* new_len = 64
*/
pos = FT_PIX_FLOOR( pos + (len >> 1) );
len = 64;
/* This is a special case where we also widen the stem
* and align it to the pixel grid.
*
* stem_center = pos + (len/2)
* nearest_pixel_center = FT_ROUND(stem_center-32)+32
* new_pos = nearest_pixel_center-32
* = FT_ROUND(stem_center-32)
* = FT_FLOOR(stem_center-32+32)
* = FT_FLOOR(stem_center)
* new_len = 64
*/
pos = FT_PIX_FLOOR( pos + ( len >> 1 ) );
len = 64;
}
else if (len > 0)
else if ( len > 0 )
{
/* this is a very small stem, we simply align it to the
* pixel grid, trying to find the minimal displacement
*
* left = pos
* right = pos + len
* left_nearest_edge = ROUND(pos)
* right_nearest_edge = ROUND(right)
*
* if ( ABS(left_nearest_edge - left) <= ABS(right_nearest_edge - right)
* new_pos = left
* else
* new_pos = right
*/
FT_Pos left_nearest = FT_PIX_ROUND(pos);
FT_Pos right_nearest = FT_PIX_ROUND(pos+len);
FT_Pos left_disp = left_nearest - pos;
FT_Pos right_disp = right_nearest - (pos+len);
/* This is a very small stem; we simply align it to the
* pixel grid, trying to find the minimal displacement.
*
* left = pos
* right = pos + len
* left_nearest_edge = ROUND(pos)
* right_nearest_edge = ROUND(right)
*
* if ( ABS(left_nearest_edge - left) <=
* ABS(right_nearest_edge - right) )
* new_pos = left
* else
* new_pos = right
*/
FT_Pos left_nearest = FT_PIX_ROUND( pos );
FT_Pos right_nearest = FT_PIX_ROUND( pos + len );
FT_Pos left_disp = left_nearest - pos;
FT_Pos right_disp = right_nearest - ( pos + len );
if (left_disp < 0) left_disp = -left_disp;
if (right_disp < 0) right_disp = -right_disp;
if (left_disp <= right_disp)
pos = left_nearest;
else
pos = right_nearest;
if ( left_disp < 0 )
left_disp = -left_disp;
if ( right_disp < 0 )
right_disp = -right_disp;
if ( left_disp <= right_disp )
pos = left_nearest;
else
pos = right_nearest;
}
else
{
/* this is a ghost stem, we're going to simply round it */
pos = FT_PIX_ROUND( pos );
/* this is a ghost stem; we simply round it */
pos = FT_PIX_ROUND( pos );
}
}
else