Smooth anchor points? Styles palette?

Got a request? Post it here. Please do not post bug reports here.
Post Reply
Chris Eilers
Posts: 42
Joined: Sun Apr 27, 2003 12:21 pm
Location: Christchurch, New Zealand

Smooth anchor points? Styles palette?

Post by Chris Eilers » Fri Jun 06, 2003 11:32 am

How many other users would like to see Font Creator offer smooth anchor points (along with their control handles), like those found in most drawing programs?

As far as I can see, the absence of smooth anchor points, or rather their equivalent in TTF points, is the main reason why so many font designers don’t like designing in the quadratic B-splines that are necessary for TTF fonts. In a posting on the Typophile forums, one (presumably professional) font designer commented that he knew a couple of font designers who loved designing in TTF curves, but all the rest hated it.

For my part, even allowing for the absence of a dedicated TTF smooth-point-set feature, I find it much more pleasant to draw lettering outlines with Font Creator’s TTF drawing tool than to draw them with Fontlab’s TTF or Postscript drawing tools, or with the Postscript tools found in Illustrator, Photoshop or Corel (or at least, Corel 3 -- I don’t know about its later versions). Font Creator is just so simple. Left-click for on-curve, right-click for off-curve. I find it far quicker to zip round an outline in Font Creator than I do in Illustrator. And more intuitive. Now that Font Creator has a full-featured set of guideline commands, it is also relatively easy to tidy up the points that were initially zip-clicked into approximate positions.

Nonetheless, in my view the absence of a dedicated TTF smooth-point-set feature is a serious impediment to designing in TTF curves. The smooth anchor point / TTF smooth-point-set is a very powerful and necessary component of good font design. It is impossible to create a really smooth flowing curve without it.

The TTF equivalent of a smooth anchor point (and its control handles) is a collinear < off-curve - on-curve - off-curve > point set. With Font creator’s new guideline features, it is now possible to create a smooth collinear point set, whether diagonal or orthogonal, without too much pain. Nonetheless a full implementation of a smooth-point-set feature would be a lot less pain, and -- surely -- it would encourage font designers using other programs to switch to Font Creator, or at least to purchase Font Creator as a second or third font design program, and as the program in which they do their main design work ??

In what follows, I would like to dream up a possible multi-stage implementation of smooth point sets in Font Creator, and I hope other users will add their voice if they think this would be a useful direction for Font Creator to evolve.

Stage 1 for smooth point sets now exists in the latest Font Creator Build:-- Half of Stage 2 also exists. Point sets can be orthogonally constrained (and therefore collinear) while drawing them by holding down the Control key. The other half of Stage 2 would involve constraining points to a diagonal by holding down, say, the Alt key. The first two points drawn after holding down the Alt key would define the diagonal, and any subsequent points drawn while continuing to hold down the Alt key would be constrained to this diagonal.

Stage 3 would involve linking three collinear points together in such a way that moving the on-curve point would result in a corresponding movement in the two off-curve points, and that moving one of the off-curve points would force a corresponding and opposite angular movement in the other off-curve point. Three linked collinear points could be visually defined by the two off-curve points being shown as small triangles, with one of their triangular points pointing toward the on-curve point. The linking of three points as a smooth point set could be performed in two ways. The first way is during the initial drawing, as indicated in Stage 2. As soon as three points are placed while holding down either the Control key or the Alt key, they immediately become a smooth point set, and if the Control or Alt key continues to be held down no further constraint is applied. The Control or Alt key would need to be released and pressed down again to begin another smooth point set. The second way to link three points as a smooth point set is to select a series of three points in an < off-curve - on-curve - off-curve > sequence, and right-click on one of them, in which case the “Create smooth point set” command would be selectable in the right-click menu.

Another way that a smooth point set might be created is to Alt-left-click-drag on an existing on-curve point, which would pull two collinear off-curve points out of the on-curve point. Ctrl-Alt-left-click-drag would orthogonally constrain the smooth point set.

Another option for creating a smooth point set could be left-click-dragging while in drawing mode. Alt-left-click-dragging could pull two off-curve points out of the on-curve point, one at the drag end-point, the other in the opposite direction. Simple left-click-dragging would collinearly constrain the next point to the two previous points, which would allow a smooth transition between a straight line and a curve.

Of course, it is possible that what I am dreaming up is a programmer’s nightmare. Is it, Erwin? If so, please delete this post, and I’ll say no more on the subject. :D

If it is feasible, what do other users think? What priority would you give to a dedicated smooth-point-set feature on your wish-list?
Last edited by Chris Eilers on Mon Jun 09, 2003 11:15 am, edited 2 times in total.

Hugh C. O'Neill
Posts: 14
Joined: Tue Jun 03, 2003 2:42 am
Location: Magnolia, NJ. USA

Post by Hugh C. O'Neill » Sun Jun 08, 2003 4:45 pm


I do not have any experience with other font design software but I agree with you comments and opinions about Font Creator. I was thinking of suggesting a new feature request when I saw yours. It is kind of related and may be for the same reasons as yours.

I was thinking of new feature similar to the ERASER function in MS PAINT. It becomes a mouse pointer and you can select the width but in essense it allows you to delete any part of a contour that the mouse pointer passes over. Maybe I was envisioning that kind of feature to do what you suggested for having a way to smooth some of the curves and almost straight line contours.

Learning about fonts has opened a whole new world for me. Fascinating

Erwin Denissen
Posts: 7784
Joined: Fri Oct 04, 2002 12:41 am
Location: Bilthoven, The Netherlands

Post by Erwin Denissen » Sun Jun 08, 2003 6:16 pm


Thanks for your excellent post about smooth point sets, I printed your post, it was over two pages!

I do like the idea but I'm not sure if it is possible to create smooth points sets the way you described it; what would happen when moving one off-curve point also affects adjacent smooth points sets?

However I'll add this feature request to the todo list.
Erwin Denissen
Proven Font Technology

Chris Eilers
Posts: 42
Joined: Sun Apr 27, 2003 12:21 pm
Location: Christchurch, New Zealand

Post by Chris Eilers » Mon Jun 09, 2003 2:36 am

Sorry, Erwin, but I’m not quite sure what you mean by “what would happen when moving one off-curve point also affects adjacent smooth points sets?” If I do understand you correctly, my answer is: “Exactly the same thing that happens right now whenever an off-curve point is moved that is adjacent to a collinear < off-curve - on-curve - off-curve > point sequence”.

In other words, a linked collinear < off-curve - on-curve - off-curve > point sequence on a TTF outline would behave the same as a smooth anchor point (along with its two control handles) in the kind of Postscript outlines that are created in drawing programs such as Illustrator and Corel, with one exception:-- the former would be quadratic B-spline curves and the latter would be cubic Bezier curves. But the end-result is much the same. I use collinear < off-curve - on-curve - off-curve > point sequences right now, except that I have to manually ensure collinearity in these < off-curve - on-curve - off-curve > point sequences with the aid of the snap to guidelines feature. In fact the majority of the TTF point sequences I create are either:
1) Collinear < off-curve - on-curve - off-curve > point sequences, or:
2) Collinear < on-curve - on-curve - off-curve > point sequences (or < off-curve - on-curve - on-curve > point sequences, which are essentially the same), or:
3) Orthogonally constrained (to 90 degrees) < on-curve - on-curve - on-curve > point sequences.

Check out the point sequences in a well-designed TTF font such as Tahoma. The majority of its TTF point sequences are either #1, #2 or #3. Imagine how long it would take to draw these via guidelines, and compare this to the time it would take to create them via a TTF version of smooth anchor points (#1) and smooth tangent points (#2).

At a guess, the reason why my original post has not attracted more response thus far is because many Font Creator users are modifying existing font configurations rather than drawing them freehand, or else they’re relying on the programmatic creation of point configurations. If my guess is correct, I’ll make the further guess that most people who want to draw glyphs freehand work in the Mac environment in the first place, and hence gravitate toward other font design programs, such as Fontographer and Fontlab.

In my view, the whole situation in respect to Type 1 and TTF fonts, and font design software, has grown like topsy, and is entirely back to front. As far as I can see, professional font designers generally design Type 1 fonts first, then programmatically convert them to TTF fonts. In an ideal world, it should be the other way round. It is far easier to draw/edit a (point configuration optimised) Type 1 font from the programmatic conversion of a TTF font (scenario A) than it is to draw/edit a (point configuration optimised) TTF font from the programmatic conversion of a Type 1 font (scenario B). In the case of scenario A, a few points need to be deleted, and some of the control handles need to lengthened. In the case of scenario B, there is a whole dog’s breakfast of points that need junking and starting all over, almost from scratch. (See “Quadratic (TrueType) v. cubic (Type 1) Bezier curves” in the “Tutorials and Solutions” section of this forum).

If my analysis is correct, the major stumbling block to scenario A is a lack of suitable design tools, such as smooth point sets, in TTF drawing programs (and also their absence in the Mac environment that so many graphic designers still favour). A corollary of this analysis is that sooner or later scenario A will dominate the electronic font design software market -- driven by the very mathematics of quadratic B-spline curves and cubic Bezier curves. The only remaining questions are:
1) How long will this process take?
2) Who will actually do the requisite programming (and reap the rewards therefrom)?

Of course, my analysis may not be correct. :D After all, I’ve only had Font Creator since March this year, and there is a great deal about font design that I still don’t know. Nonetheless, as far as I can see, this analysis is based on a fairly solid footing. The only possible flaw in it that I can see is the possibility that someone could come up with a vastly improved algorithm for converting Type 1 outlines to TTF outlines. Even then, I suspect that the analysis might still hold, because I suspect that the additional sophistication of cubic Bezier curves are not warranted on basis of design aesthetics, and the simpler mathematics involved in quadratic B-splines offers significant speed advantages in the on-the-fly rasterisation necessary for print and screen reproduction.

Chris Eilers
Posts: 42
Joined: Sun Apr 27, 2003 12:21 pm
Location: Christchurch, New Zealand

Styles palette ?

Post by Chris Eilers » Mon Jun 09, 2003 11:03 am

As an extension of smooth TTF anchor and tangent point sets, I’d like to sketch out a font software feature that, once implemented, would, I strongly suspect, prove to be so useful that font designers would wonder how they ever survived without it. The feature is perhaps best described as a Styles palette, similar in some ways to the Styles in MS Word and PageMaker.

On the “top” level, Styles include:
1) A user-created serif Style, or perhaps a partially-defined master serif definition, with several variant implementations of this master.
2) A set of user-defined thicknesses for glyph strokes, e.g. a thick capital letter stroke, and a thin capital letter stroke.
3) A set of user-specified heights for glyphs and glyph components, including specified deviations from the basic heights.

On a “lower” level, Styles include specifications that lines between a particular set of points bear a certain relationship with lines between another set of points (e.g. collinear, orthogonal, set on a particular angle, parallel, mirrored angle from the vertical, set at a specified distance from).

For example, a Style applied to the four on-curve points that provide the foundation for the rightmost stroke on a capital ‘W’ would ensure not only parallelism of the two sides of the outline but also that the width of the stroke conformed to the Thin Stroke Width Style -- or to the user-created Thin Diagonal Stroke Width Style, or to the Capital-letter Thin Diagonal Stroke Width Style, or whatever other Style the user cares to define. Also, the Style could be released from the four points while still leaving the parallelism attribute.

Naturally, Styles would be implemented by means of a cascading hierarchy of mathematical constraints, or to be more precise, an interlocking/overlapping cascading multiple hierarchy structure of constraints. The need for an interlocking structure of multiple hierarchies results from the fact that the two uppermost points of the four on-curve points that provide the foundation for the rightmost stroke on a capital ‘W’ are a part of the Capital-letter Angular Top Serif Style as well as the Thin Stroke Width Style.

Styles can be applied to, released from and reapplied to particular sets of points while in Point mode. A given Style can only be applied to a particular set of points if the selected points meet the particular on-curve/off-curve sequence that is a pre-defined prerequisite of the particular style. If they do meet the sequence, the appropriate Style in the Styles palette will be active and selectable. Alternatively, in Insert Contour mode, clicking on a Style will insert the Style’s particular point set, or at least it will for some Styles. For other Styles, this won’t work, or at least it won’t work in the way that Insert Contour is currently configured. Consequently, only some Styles in the Styles palette would be active and selectable while in Insert Contour mode, and then only when the contour is in the state to insert them. Of course, there are other ways that the whole Styles feature could be implemented. Incidentally, if a glyph height Style was applied to a particular glyph, and if the user started editing the glyph, the Style would be automatically released. The user has to specify both the bottom point(s) and the top point(s) in order to apply a glyph height Style, and there will be a default way, as well as user-defined ways, that the glyph height adjustment mechanism is implemented.

In essence, I’m suggesting that the program takes over all the boring, mechanical stuff that computers are so good at, and leaves the user to do all the fun design stuff. Of course, Styles are very flexible beasties. As with MS Word and PageMaker, some users will ignore font Styles completely, and others will specify everything down to the last full stop. And then, on top of Styles, there will be Templates:-- sets of flexible pre-applied Style structures, both user-created as well as those in the Templates Library that comes with the font design software. Then we'll find a place for Mr Font Clippy, and Tip of the Day will finally come into its own. And thus will the full democratisation of font creation sweep over the world, leaving in its wake vast oceans of ugliness. :? Ah, well. It was just an idea.

Post Reply