Uff, another thinko.

This commit is contained in:
Werner Lemberg 2009-06-28 02:11:51 +02:00
parent e7389a4405
commit 24370d67f5
3 changed files with 21 additions and 18 deletions

View File

@ -5,9 +5,8 @@
* include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h * include/freetype/internal/psaux.h (T1_Decoder), src/cff/cffgload.h
(CFF_Decoder): Add `seac' boolean variable. (CFF_Decoder): Add `seac' boolean variable.
* src/cff/cffgload.c (cff_operator_seac, * src/cff/cffgload.c (cff_operator_seac), src/psaux/t1decode.c
cff_decoder_parse_charstrings), src/psaux/t1decode.c (t1operator_seac): Use it.
(t1operator_seac, t1_decoder_parse_charstrings): Use it.
2009-06-28 Werner Lemberg <wl@gnu.org> 2009-06-28 Werner Lemberg <wl@gnu.org>

View File

@ -783,8 +783,11 @@
&charstring, &charstring_len ); &charstring, &charstring_len );
if ( !error ) if ( !error )
{ {
/* the seac operator must not be nested */
decoder->seac = TRUE;
error = cff_decoder_parse_charstrings( decoder, charstring, error = cff_decoder_parse_charstrings( decoder, charstring,
charstring_len ); charstring_len );
decoder->seac = FALSE;
if ( error ) if ( error )
goto Exit; goto Exit;
@ -809,8 +812,11 @@
&charstring, &charstring_len ); &charstring, &charstring_len );
if ( !error ) if ( !error )
{ {
/* the seac operator must not be nested */
decoder->seac = TRUE;
error = cff_decoder_parse_charstrings( decoder, charstring, error = cff_decoder_parse_charstrings( decoder, charstring,
charstring_len ); charstring_len );
decoder->seac = FALSE;
if ( error ) if ( error )
goto Exit; goto Exit;
@ -1889,14 +1895,11 @@
FT_Pos glyph_width = decoder->glyph_width; FT_Pos glyph_width = decoder->glyph_width;
/* the seac operator must not be nested */
decoder->seac = TRUE;
error = cff_operator_seac( decoder, error = cff_operator_seac( decoder,
args[-4], args[-4],
args[-3], args[-3],
(FT_Int)( args[-2] >> 16 ), (FT_Int)( args[-2] >> 16 ),
(FT_Int)( args[-1] >> 16 ) ); (FT_Int)( args[-1] >> 16 ) );
decoder->seac = FALSE;
decoder->glyph_width = glyph_width; decoder->glyph_width = glyph_width;
} }

View File

@ -282,7 +282,10 @@
FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */ FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */
/* the seac operator must not be nested */
decoder->seac = TRUE;
error = t1_decoder_parse_glyph( decoder, bchar_index ); error = t1_decoder_parse_glyph( decoder, bchar_index );
decoder->seac = FALSE;
if ( error ) if ( error )
goto Exit; goto Exit;
@ -300,7 +303,11 @@
/* Now load `achar' on top of */ /* Now load `achar' on top of */
/* the base outline */ /* the base outline */
/* the seac operator must not be nested */
decoder->seac = TRUE;
error = t1_decoder_parse_glyph( decoder, achar_index ); error = t1_decoder_parse_glyph( decoder, achar_index );
decoder->seac = FALSE;
if ( error ) if ( error )
goto Exit; goto Exit;
@ -1125,18 +1132,12 @@
break; break;
case op_seac: case op_seac:
/* the seac operator must not be nested */ return t1operator_seac( decoder,
decoder->seac = TRUE; top[0],
error = t1operator_seac( decoder, top[1],
top[0], top[2],
top[1], (FT_Int)( top[3] >> 16 ),
top[2], (FT_Int)( top[4] >> 16 ) );
(FT_Int)( top[3] >> 16 ),
(FT_Int)( top[4] >> 16 ) );
decoder->seac = FALSE;
/* return immediately after the processing */
return error;
case op_sbw: case op_sbw:
FT_TRACE4(( " sbw" )); FT_TRACE4(( " sbw" ));