Jump to content
Education typography videos. Check out our YouTube channel …

Spiro 0.01 release

Recommended Posts


Did anyone ever get to play around with FontChameleon Pro before it was pulled from public consumption? Voices seem to rave about how fantastic it was. I guess it was not fully parametric, but relied to some extent on some predesigned endpoint to interpolate from? The reason I'm thinking about it is the fact that a number of parametric type engines have come and gone through the years. There is Metafont, FontChameleon, Incubator(?), LiveType and some HP stuff i forgot the name of. Why where they never successful? I can certainly understand why Metafont never went of the ground as it's made for the programmer and not for the designer (correct me if I'm wrong here). Is this parametric approach simply too complicated for the designer to take anywhere, or was it just the lack of GUI that kept it off? FontChamelon seemed to go all the way to the user, skipping the designer, which was it's point I guess.

@Raph: That interpolation you showed is exactly what I want.

Link to comment

> You seem to be saying that parametric design
> cannot be done with FontLab’s scripting tools.

No, I don't know enough to say either way (and I don't see how I implied otherwise). On the other hand Python being a fully capable language shouldn't have a problem. The real problem is that there's not enough money in type for something that hard to happen, at least not quickly.

> whether the interface makes it easy to design glyphs parametrically.

To most people that means a GUI, and the answer is definitely
No in the case of FontLab... but really just as No for anything else.

> What would you like to see?

Let's say "skagy" varying from a pretty small to a pretty large x-height.

FontChameleon: I think I had a copy once, didn't get to really use it, and
then something quite mysterious happened and we've become deprived.


Link to comment
Christian Robertson

Wow. This is really nice. Kudos for sharing the code. I'm hoping that we'll see more in the future.

Any thoughts on releasing the code under a more permissive license so it can be used in a certain well known commercial app? I realize that there is the remote potential that you might be able to license it, but it would be a real shame if the stuff never got picked up.

Link to comment
Christian Robertson

If you need any convincing about the value of this technology, sit down and try to draw an s. It's fantastic. What took me forever to figure out with beziers happened almost automatically here.

Link to comment

Christian: suffice it to say that I've put a lot of thought into my licensing strategy, and am pretty happy with it.

Basically, if you're a type designer and want to have this kind of curve drawing tool in a production environment, you have four choices:

1. Learn to code and do it yourself.

2. Show some love to the free software community, and encourage them to integrate it into their leading design apps (Inkscape, FontForge).

3. Lobby the proprietary app vendors to license it.

4. Sit on your @ss and hope somebody else does 1-3.

Glad you like it!

Link to comment

This makes my self esteem rise a million percent. It was done in 10 minutes.

Wish I could export it to illutrator and to hell with the pen tool ;)

Link to comment
William Berkson

>Million percent

Hate to burst your bubble, but your S doesn't have the curves of Christian Robertson's S--and it isn't as good. You can debate how much it is Christian and how much the spiral tools. But here Christian says it was natural and easy for him to get a result with the spiral tools that would have been difficult and laborious with Bezier curves.

Link to comment

This is extremely interesting and I'm sure useful. The "traditional" S test, however, is of a specific S. And even before that, the "traditional" contour format test is to scan and digitize an FC-339 8 1/4" French Curve. e.g. http://www.steinlaufandstoller.com/French%20Curves%20Plastic.htm, and then, in this case, do post digitization traslations to CB and QB, so you can see it filled to black in output, or on the screen as the case may be.

Link to comment
William Berkson

>French Curve

Looking at some internet sites, it seems that the most widely used French Curves are composed of sections of parabolas, hyperbolas, and elipses. These are all conic sections, can be described by quadratic equations, and hence can be drawn perfectly by quadratic bezier curves.

The Cornu spirals here are different. If I understand it rightly, sections between knots cannot be drawn accurately with either a *single* quadratic or cubic curve, though of course they can be approximated with multiple curves of either type.

I don't know if the Cornu spiral is on any French Curves.

Link to comment

@dberlow: The fact of a standardized test for drawing ability is most interesting. Do you have a cite in a book or journal for that test? If not, I can always do "personal communication".

I took your challenge, starting with an image of the FC-339 from the C-thru site. The drawing took about 8 minutes, and there are a total of 50 points.

And the conversion to Beziers (43 segments, each of which has 3 control points):

And here it is filled (PDF here if you want to print it out).

How'd I do?

@William: I believe it is used on some real french curves, because it's one of the relatively few analytical curves that has a nice inflection point in it. But I don't have a good cite. Again, one would be useful.

Link to comment

William, as I explained in the other thread, it's not about evaluating the results out of context, it's about how much effort Raph's method saves. Whether Rodrigo's "S" is better or worse than Christian's is irrelevant; the point is to consider how much effort each of them saved in getting to that in-some-way satisfactory result.

> the “traditional” contour format test is to scan and digitize ...
> http://www.steinlaufandstoller.com/French%20Curves%20Plastic.htm

Why does one have to wait 9+ years to be told something this relevant! :-/
When you think about it though I guess it's common sense. Aaah, hindsight!

BTW, what exactly is the traditional "S" test?

> ... can be drawn perfectly by quadratic bezier curves.

Yet once more: it's not about this being possible
or not, it's about this being worth doing or not.
"Perfectly" should not come into the discussion.

It's possible to go to the grocery store crawling on
your back, naked. This does not make it worth doing.
And the "imperfection" of using a car, a bicycle or
your feet does not make any of those a bad idea.

> The drawing took about 8 minutes, and there are a total of 50 points.

Now this is getting relevant. How much time would it take you to do it with beziers? It would be useful here to ask David to time himself with both methods too, since you'd like to get the view form both ends: somebody used to drawing with cornus more and somebody used to drawing with beziers more.

Also, some overlays would be very useful, since your "thresh" and "optim" settings don't mean anything to us. An overlay of the spiral original over the converted bezier, and one of the end result black shape over the original piece of plastic. Please? :-)


Link to comment

> What took me forever to figure out with
> beziers happened almost automatically here.

That implies cornus are better when you're starting out in type design; but an equally important issue is: for somebody with experience with beziers, would you say they're about the same in the end, or do cornus have an advantage there too?

> 3. Lobby the proprietary app vendors to license it.

To me adding cornu support seems like just the ticket to encourage upgrades to FontLab 6... In fact right this minute they might be desperately trying to figure out how to add value to their product to keep the upgrade money coming! That said, an email campaign by users can only help.

BTW Raph: what term should we be using for this - cornus, spirals, or what?
Something short would be great.


Link to comment

Hrant: BTW, what exactly is the traditional “S” test?

David will correct me if I'm wrong, but from what I understand from a conversation with Mike Parker, the traditional test administered to someone applying for employment in the Linotype drawing office, in the "good ol' days," was the task of reproducing freehand (I'm talking about drawing here -- pencils and paper, you know) a specific 'S' from a given model typeface, in order to gauge their innate talent and skill.

I don't know if it was the same 'S' each time, or if there was a time limit.

-- K.

Link to comment

Maybe not a strict time-limit, but I'm sure at least an
internal biological stopwatch would've been running! :-)

BTW, isn't today's "freehand" direct-digital?


Link to comment

@hrant: An overlay of the spiral original over the converted bezier

The Bezier version is a 1px red stroke, and the spiral version is on top in black. You can see a teeny difference on the left hand of the top curve. If you tweak the "thresh" parameter, it'll add more Beziers to make the error go as small as you like. I picked the .01 number as the default for my work because the error is just below the threshold of what you can see when you look at the shapes side-by-side. Setting it to .001 adds nine beziers (for a total of 52), and the visual difference becomes undetectable even when zoomed. Btw, if you want to zoom in on the above comparison, I put up a PDF.

I tried overlaying the black-filled version over the original photo, but I couldn't get anything that seemed as clear as the first image above, partly because of the low contrast of the original. I have done the same thing with letters - maybe I should post some images from that?

what term should we be using for this - cornus, spirals, or what?

I kinda like "spirals". Cornu spirals are actually only one case. The most general case is a third order polynomial spiral, which I sometimes abbreviate "spiro". Incidentally, Cornu didn't invent the spiral bearing his name, Euler did, so they should really be called "Euler spirals".

How much time would it take you to do it with beziers?

Well, for me to do it wouldn't exactly be fair, because I want my tools to win. But I'd be very interested to learn how long it takes you, Hrant, and whether you're as satisfied with the technical quality.

Actually, what I think I'd like to do is pose a real challenge. Maybe a neutral Typophile person (Tiff? Stephen?) could serve as moderator. It would go something like this: the moderator selects a high quality image of a predigital glyph, something like 1000px square, and posts it at a pre-arranged time. Then, people post followups to that thread containing their best shot, using the tools of their choice - Spiro, Illustrator, FontLab, QB's, CB's, IkarusMaster, whatever. Reports of drawing time can be verified by the post timestamp, and then the moderator would judge the quality.

Sound like fun? I would write up the results in a section of my thesis, as part of the case I'm trying to make is that spirals are more intuitive, more productive, and more conducive to high-quality results. Going up against the best skills of Typophiles would be a real way to falsifiably test those claims.

Link to comment

I managed to make your test program crash.

PID: 901
Thread: 0

Exception: EXC_BAD_ACCESS (0x0001)
Codes: KERN_INVALID_ADDRESS (0x0001) at 0xc0000000

Should I send you the full report?

Link to comment

> The Bezier version is a 1px red stroke, and the spiral version is on top in black.

Well goldangit then that's plenty close enough!

It's nice to see that such a close approximation
doesn't result in an infestation of vertices.

What does the "optim" setting do?

Concerning an overlay of the physical French curve and your end-result, we don't really need the former, we just need the original (1-bit) shape you started with. But if you think the threshold for that is as tight as the first overlay, don't bother.

> Cornu didn’t invent the spiral bearing his name, Euler did

Well, and apparently Pierre didn't invent beziers, Paul de Casteljau did, but these things can stick and trying to unstick them distracts from true work! On the other hand Euler was da man (as Laplace* found out the hard way) and it's early days so maybe we can do something.

* Or was it somebody else? I'm vaguely it might have been an Englishman instead. Whoever it was invented some polynomial math, and then found out it was merely a special case of something Euler had done long before!

> I’d be very interested to learn how long it takes you, Hrant

Yeah, me too. Windows version please!

Your broader challenge sounds fun and relevant.
But no need to bother with formal timekeeping - we can trust us.


Link to comment

What does the “optim” setting do?

It's a speed/optimization tradeoff. At zero, it's interactively fast but generates about three times as many Beziers as is needed. At three, it (currently) takes about a minute, but generates something like the absolute most optimized cubic Bezier representation possible for the curve. The main thing it's doing at level 3 is exhaustively searching all points along the curve to find the best points to break - at the lower levels, it just splits the curve in half whenever a single Bezier is not sufficient. There'll be more detail in my thesis, of course.

But no need to bother with formal timekeeping - we can trust us.

I think we can too, but I'd like to remove as many variables that could spoil the results as I can.

Link to comment

Not trying to compare to his at all William (his S sure is a very nice S), it'll probably take a million years till a get the letter s to look like I want it to... It may not look perfect, but it certain took 1/millionth of the time to get done. If the tool is useful only to know that I suck at drawing "s" in less time, it's fair enough for me.

Link to comment


May I ask how you converted to beziers?

I am unable to export my doodlings in any way, and the save option doesn't appear to do anything.

I do find spiro a much quicker and intuitive way of drawing. I have used the bezier tool for many years and feel that I am quite proficient, but this is so quick. It seems more natural.



Link to comment

This looks like some amazing stuff. I'm surprised more type designers haven't chimed in on this conversation. Where are you all?

Link to comment

@Graham_Taylor: May I ask how you converted to beziers?

This part of the code is very rough and unfinished. When you press Apple-S, it saves the file "plate" into the file system, into the current directory, not sure exactly where that is by default on a mac. (a quick test reveals that it seems to go into / , which is not friendly behavior). Similarly, when you press Apple-P, it saves a PostScript file to /tmp/foo.ps. I then use some command-line scripts (mostly written in Python) to optimize the Beziers, etc. These scripts ship in the spiro tarball, but not in the ppedit.dmg disk image.

Dave Crossland (abattis) is planning on writing better documentation soon, which I think will be very helpful.

@biddy: thanks!

Link to comment

Didn't have time until now to test it. I learned to digitize type with Ikarus, so it's not completely unfamiliar. It seems to be flexible enough to allow the fine tuning I want, but right now, I'm so acclimated to beziers that I'd need more time to get used to the different behavior. I couldn't necessarily compare my drawing speed between Beziers and spirals because most of my actual design work is spent adjusting existing outlines. I don't do a lot of revivals, and I don't do big finished drawings anymore, so the speed at which I can digitize an outline isn't a big factor. Major editing happens after the first round of proofs. I can already slap an outline together in bezier format in record time. It's not finished no matter how much I fuss over it initially.

Raph, I don't want to rain on your challenge, but this means I can't gauge quality or speed based on immediate digitization results; it's very iterative, and "accuracy" isn't my concern, rightness of design is, which is revealed with testing and use.

Link to comment

crossgrove: You make a very good point. Making good, quick digitizations isn't the only way to evaluate curve-drawing techniques.

My subjective experience is that Spiro is extremely good for making fine edits. You can tweak points around without having to worry about technical details like extremal points, and, in general, the changes "make sense". I've done quite a bit of this with both my revivals and my original designs (Inconsolata and Cecco). The warm, fuzzy feeling that I get when drawing has done a lot to motivate me to go more deeply into the math behind the curves, so that I know at multiple levels that the curves are "right."

At some point, you go beyond what can be quantified, and into the realm of what it feels like to use the tool. I'm hoping that enough people spend enough time playing with it that I can start to get more insight into that, in addition to my own personal experience.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Our partners

Discover the Best Deals for Freelance Designers.
The largest selection of professional fonts for any project. Over 130,000 available fonts, and counting.
Discover the fonts from the Germany foundry FDI Type. A brand of Schriftkontor Ralf Herrmann.
Get to your apps and creative work. Explore curated inspiration, livestream learning, tutorials, and creative challenges.
Education typography videos. Check out our YouTube channel …
  • Create New...

Important Information

We are placing functional cookies on your device to help make this website better.