freetype-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Type 2 flex/flex1 ambiguities?


From: Tom Kacvinsky
Subject: Type 2 flex/flex1 ambiguities?
Date: Wed, 5 Jul 2000 10:30:17 -0400 (EDT)

I wanted to implement all of the flex operators to t2gload.c I went
back to the spec to make sure I understood all of the gotchas, and I
ran across an ambiguity in the specification!

In particular, for the flex/flex1 operators, the curve segments that
are to be "flexed" do not have to have the end points on a horizontal
(or vertical) line, and the join point doesn't necessarily have its
attendent control points on a horizontal/vertical line.

One then needs to determine either the flex depth (for flex) or the
last delta (and whether it is an x delta or a y delta; this is for
flex1) by using an algorithm as described in the flex1 specification.

The flex1 specification uses the absolute values of the deltas from
the start point to the last control point to determine the flex depth
(or the interpretation of the last delta).  But it is ambiguous!  the
x delta could equal the y delta, and that case is not described.  Or,
if one had a "horizontal" curve in mind, there are cases where the
algorithm would yield a "vertical" curve!  I have examples for both
ambiguities. I am sure there are others ambiguities.

Would someone read the section and verify my claims?  Or explain to me
why I am wrong, if I am wrong?

I believe that Adobe has other conditions in place in their
rasterizers.  Those conditions did not make it into the spec., though,
and that should be pointed out to Adobe, in addition to the purported
ambiguities listed above.

In case you are wondering why I am hot after getting flex operators
implemented, AGaramondPro uses them quite heavily.  The CFF parser is
showing the glyphs correctly, but I think that that is a accident....

Regards,

Tom




reply via email to

[Prev in Thread] Current Thread [Next in Thread]