[gs-bugs] [Bug 689471] Error in Processing Type42 Charstrings

bugs.ghostscript.com-bugzilla-daemon at ghostscript.com bugs.ghostscript.com-bugzilla-daemon at ghostscript.com
Wed Feb 11 06:50:31 PST 2009


ken.sharp at artifex.com changed:

           What    |Removed                     |Added
             Status|NEW                         |ASSIGNED

------- Additional Comments From ken.sharp at artifex.com  2009-02-11 06:50 -------
I've spent some time with several versions of the TrueType spec, the original
FreeType 1 code and the current FreeType 2 code, and another TrueType
interpreter looking into the problem.

As far as I can see the speculation in comment #27 is not the case, there should
only be one pair of phantom points per *outline*, an outline for a composite
glyph is still only one outline, even though it consists of two glyph
descriptions, and therefore only has two phantom points.

The second glyph for the composite glyph is not 'empty' , its missing. The
Microsoft Font Validator Tool is quite explicit in its error message:

"E1115 Failure to load the component Glyph index 123, Component index 216"

So the glyph is broken, I believe quite badly broken. Freetype 1 & 2, as noted
above, ignore most problems with fonts, unless 'pedantic_hinting' is set. From
previous work with TrueType fonts I believe this laissez faire attitude is
common to TrueType interpreters, and is the reason this font does not cause a
problem with most implementations. 

THe other TT interpreter I've checked also does not have a problem with this
font, though for subtly different reasons. nevertheless it too allows this
'slack' error tolerance.

So, Ghostscript's behaviour is technically correct, since the glyph and font are
invalid. However, it would be appropriate for us to attempt to mimic the
behaviour of other interpreters and allow this glyph to pass unchallenged.

It would be nice if we could restore the 'pedantic_hinting' which was removed in
the port of the FreeType code into GS, to allow customers flexibility in this
kind of error handling, but that would now be a major undertaking.

So I think the correct fix in this case is to abort the instruction if the point
indexed is not valid, and continue with the next instruction, just as FreeType 1
& 2 do.

------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.

More information about the gs-bugs mailing list