Comment 4 for bug 331038

Revision history for this message
Jerzy Jalocha N (jjalocha) wrote : Re: implementation of spiros

I agree with Marcus, that the implementation of spiros in Inkscape has some serious shortcomings, but I don't think, that everything should be copied from FontForge. Here are my thoughts about it.

 * Inserting New Nodes *
The first problem mentioned above, about inserting a new point on an existing segment. Right now, you can select two adjacent points and use the 'insert new nodes into selected segments' tool (INS key), which distorts the shape of the resulting spiro curve. According to Raph Levien's PhD thesis, extensionality was one of the explicit design goals of his spiro curves. Thus I would expect the INS tool to create a new node about halfway between the selected nodes, on the original spiro curve, and such that it doesn't change the shape of the resulting curve. (Just as with the normal Bézier curves.)
As a bonus, it would be nice if you could double-click anywhere on a segment, and a new (non-distorting) point would be added right there. (Just as with the normal Bézier curves.)

 * G2 and G4 Nodes *
In the current implementation, I am unable to find a way to select or switch between G2 and G4 node types. I am not sure if only one type is implemented, or if the switch is hidden somewhere I can't find. It would be important to implement both node types so that they are easily accessible, and easy to distinguish visually.

 * Straight-to-Curved Transition *
FontForge implements two particular node types for smooth transitions from straight segments to curved segments. Inkscape uses the 'make selected nodes smooth' tool (Shift+S) instead, which in my opinion is easier to use, and is implemented analogous to its Bézier curves.

 * Angle Constraints *
One feature that I miss both in FontForge and in Inkscape, are angle constraints for end and corner points. I would probably expect a handle, similar to Bézier curves, but of fixed length. (And CTRL key constrained angle increments.)