Fix Savannah bug #28521.
Issue #28226 involved a work-around for a font which used the `setcurrentpoint' operator in an invalid way; this operator is only supposed to be used with the result of OtherSubrs, and the font used it directly. The supplied patch removed the block of code which checked this usage entirely. This turns out to be a Bad Thing. If `setcurrentpoint' is being used correctly it should reset the flex flag in the decoder. If we don't do this then the flag never gets reset and we omit any further contours from the glyph (at least until we close the path or similar). * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <op_setcurrentpoint>: Handle `flex_state' correctly.
This commit is contained in:
parent
297dc2235a
commit
8ea31415f4
22
ChangeLog
22
ChangeLog
|
@ -1,3 +1,22 @@
|
|||
2010-01-08 Ken Sharp <ken.sharp@artifex.com>
|
||||
|
||||
Fix Savannah bug #28521.
|
||||
|
||||
Issue #28226 involved a work-around for a font which used the
|
||||
`setcurrentpoint' operator in an invalid way; this operator is only
|
||||
supposed to be used with the result of OtherSubrs, and the font used
|
||||
it directly. The supplied patch removed the block of code which
|
||||
checked this usage entirely.
|
||||
|
||||
This turns out to be a Bad Thing. If `setcurrentpoint' is being
|
||||
used correctly it should reset the flex flag in the decoder. If we
|
||||
don't do this then the flag never gets reset and we omit any further
|
||||
contours from the glyph (at least until we close the path or
|
||||
similar).
|
||||
|
||||
* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
|
||||
<op_setcurrentpoint>: Handle `flex_state' correctly.
|
||||
|
||||
2010-01-05 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Apply reports from clang static analyzer.
|
||||
|
@ -134,6 +153,9 @@
|
|||
initial point to (0,0). Unnecessarily so, as they correctly use an
|
||||
`hsbw' operation which implicitly sets the initial point.
|
||||
|
||||
* src/psaux/t1decode.c (t1_decoder_parse_charstrings)
|
||||
<op_setcurrentpoint>: Comment out code.
|
||||
|
||||
2009-12-14 Bram Tassyns <bramt@enfocus.be>
|
||||
|
||||
Fix parsing of /CIDFontVersion.
|
||||
|
|
|
@ -1459,7 +1459,6 @@
|
|||
case op_setcurrentpoint:
|
||||
FT_TRACE4(( " setcurrentpoint" ));
|
||||
|
||||
#if 0
|
||||
/* From the T1 specification, section 6.4: */
|
||||
/* */
|
||||
/* The setcurrentpoint command is used only in */
|
||||
|
@ -1472,6 +1471,7 @@
|
|||
/* Distiller handle this situation by silently ignoring */
|
||||
/* the inappropriate `setcurrentpoint' instruction. So */
|
||||
/* we do the same. */
|
||||
#if 0
|
||||
|
||||
if ( decoder->flex_state != 1 )
|
||||
{
|
||||
|
@ -1480,8 +1480,8 @@
|
|||
goto Syntax_Error;
|
||||
}
|
||||
else
|
||||
decoder->flex_state = 0;
|
||||
#endif
|
||||
decoder->flex_state = 0;
|
||||
break;
|
||||
|
||||
case op_unknown15:
|
||||
|
|
Loading…
Reference in New Issue