diff --git a/ChangeLog b/ChangeLog index 3aeffcf85..e9a636c5d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-01-31 Chia-I Wu + + * src/cff/cffobjs.c (cff_face_init), src/cid/cidobjs.c + (cid_face_init), src/pfr/pfrobjs.c (pfr_face_init), src/type1/t1objs.c + (T1_Face_Init): Set face->height to + MAX(1.2 * units_per_EM, ascender - descender). + 2006-01-31 Chia-I Wu * include/freetype/internal/t1types.h (AFM_FontInfo), diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index 623b5d70c..a90afb4bb 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -461,16 +461,18 @@ cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16; cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16; - cffface->ascender = (FT_Short)( cffface->bbox.yMax ); - cffface->descender = (FT_Short)( cffface->bbox.yMin ); - cffface->height = (FT_Short)( - ( ( cffface->ascender - cffface->descender ) * 12 ) / 10 ); - if ( !dict->units_per_em ) dict->units_per_em = 1000; cffface->units_per_EM = dict->units_per_em; + cffface->ascender = (FT_Short)( cffface->bbox.yMax ); + cffface->descender = (FT_Short)( cffface->bbox.yMin ); + + cffface->height = (FT_Short)( ( cffface->units_per_EM * 12 ) / 10 ); + if ( cffface->height < cffface->ascender - cffface->descender ) + cffface->height = cffface->ascender - cffface->descender; + cffface->underline_position = (FT_Short)( dict->underline_position >> 16 ); cffface->underline_thickness = diff --git a/src/cid/cidobjs.c b/src/cid/cidobjs.c index d6b0a2d3a..16ddc47d8 100644 --- a/src/cid/cidobjs.c +++ b/src/cid/cidobjs.c @@ -422,8 +422,10 @@ cidface->ascender = (FT_Short)( cidface->bbox.yMax ); cidface->descender = (FT_Short)( cidface->bbox.yMin ); - cidface->height = (FT_Short)( - ( ( cidface->ascender - cidface->descender ) * 12 ) / 10 ); + + cidface->height = (FT_Short)( ( cidface->units_per_EM * 12 ) / 10 ); + if ( cidface->height < cidface->ascender - cidface->descender ) + cidface->height = cidface->ascender - cidface->descender; cidface->underline_position = (FT_Short)info->underline_position; cidface->underline_thickness = (FT_Short)info->underline_thickness; diff --git a/src/pfr/pfrobjs.c b/src/pfr/pfrobjs.c index 60191e8aa..3e2beeee2 100644 --- a/src/pfr/pfrobjs.c +++ b/src/pfr/pfrobjs.c @@ -165,8 +165,10 @@ pfrface->units_per_EM = (FT_UShort)phy_font->outline_resolution; pfrface->ascender = (FT_Short) phy_font->bbox.yMax; pfrface->descender = (FT_Short) phy_font->bbox.yMin; - pfrface->height = (FT_Short)( - ( ( pfrface->ascender - pfrface->descender ) * 12 ) / 10 ); + + pfrface->height = (FT_Short)( ( pfrface->units_per_EM * 12 ) / 10 ); + if ( pfrface->height < pfrface->ascender - pfrface->descender ) + pfrface->height = pfrface->ascender - pfrface->descender; if ( phy_font->num_strikes > 0 ) { diff --git a/src/type1/t1objs.c b/src/type1/t1objs.c index ae715f51a..c7636efaf 100644 --- a/src/type1/t1objs.c +++ b/src/type1/t1objs.c @@ -414,8 +414,10 @@ root->ascender = (FT_Short)( root->bbox.yMax ); root->descender = (FT_Short)( root->bbox.yMin ); - root->height = (FT_Short)( - ( ( root->ascender - root->descender ) * 12 ) / 10 ); + + root->height = (FT_Short)( ( root->units_per_EM * 12 ) / 10 ); + if ( root->height < root->ascender - root->descender ) + root->height = root->ascender - root->descender; /* now compute the maximum advance width */ root->max_advance_width =