[MPEG-OTSPEC] Some research on TT instructions and cubics

Hin-Tak Leung htl10 at users.sourceforge.net
Fri Sep 22 15:00:14 CEST 2023

 Just a caution: My recall of the exact details is a bit fuzzy, not having looked at it after a few years, but I remember there is an "optimization" details of the quadratic which will break very badly under cubic: in the typical cubic you get on-off-off-on-off-off-on, right? In quadratic it is a lot simpler, just on-off-on-off-on-off- (theoretically). I believe there is a clever optimisation to save a few bytes somewhere which says, if you have off-off, it implies a hidden on-point in the middle. This saves a few bytes as you don't encode the middle on-point. This obviously will break in the cubic case, as you now have an ambiguity: does two off-off points means two quadratic with an implied hidden middle on-point, or is it the middle of a cubic?
Microsoft or Apple people (or even freetype people) more familiar with TT instructions can correct me and/or fill in the details.
    On Friday, 22 September 2023 at 13:25:52 BST, Georg Seifert <typogeorg at gmail.com> wrote:  

Am 22.09.2023 um 14:01 schrieb Skef Iterum <skef at skef.org>:

In the August meeting in Portland (and in some exchanges before that) some questions were raised about the feasibility of hinting cubic splines in glyf with the existing TT instruction set. One response was that this was not likely to be a problem as it is relatively rare in practice to move quadratic control points (as opposed to on-curve points). The idea being that the fact that a cubic has two control points rather than one shouldn't be an issue.

Some folks on our team at Adobe decided to look into this a bit more, although not at great depth. From what we can tell, when the convention of only moving on-curve points works, that is typically because of a subsequent call to of the IUP instruction in one or both dimensions.  That instruction is described this way:

Interpolates untouched points in the zone referenced by zp2 to preserve the original relationship of the untouched points to the other points in that zone. 

Unfortunately the documentation goes on to say:

Considers the reference glyph outline contour by contour, moving any untouched points that fall sequentially between a pair of touched points.

If neither cubic control point is hinted, neither will fall sequentially between a pair of touched points, and therefore cubic control points will typically not move in relation to how their adjacent on-curve points move.
As I understand this, it doesn't matter what point before or after is touched and if that is in the same "segment". It basically ignores the flags and just looks at the contour points (and the previous and next point can be the same, then the whole contour moves in the same direction). And thous I don't see any difference with hinting control point in cubic or quadratics.
mpeg-otspec mailing list
mpeg-otspec at lists.aau.at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20230922/cd19d716/attachment.html>

More information about the mpeg-otspec mailing list