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

Skef Iterum skef at skef.org
Fri Sep 22 14:01:21 CEST 2023


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 
<https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html#IUP>:

    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.

It may be possible to update the instruction to also operate on pairs of 
untouched points sequentially between touched points, or to add a new 
instruction that does so, but only if there are not other cases arising 
from quadratics with the same pattern. More importantly, the heuristics 
for the quadratic case -- how the instruction moves the control point in 
relation to its adjacent quadratic on-curve points -- don't obviously 
apply to the cubic case. This is not just because there is "another 
point". How one cubic control point should move in a given case can 
greatly depend on the position of the other control point. In general 
the "behavior" of cubics is more complex than that of quadratics -- 
they're stranger creatures.

Anyway, if all this is accurate then hinting is likely to be a problem 
if cubics are added to glyf and TT hinting is still considered to be 
supported in glyphs that contain them, unless new instructions are also 
added.

Skef
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.aau.at/pipermail/mpeg-otspec/attachments/20230922/5abdd639/attachment.html>


More information about the mpeg-otspec mailing list