Spiro 0.01 release

Primary tabs

147 posts / 0 new
Last post
Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

> can spiro find a frontal logic?

I certainly hope not.

hhp

Terry Biddle's picture
Offline
Joined: 21 May 2005 - 1:42pm
0

Some interesting points here. As a newbie to type design, I recall how much Font Audit controlled my design choices.

Carl and Hrant: the chirography issue is actually something I struggle with, as I want the computer to do exactly what my hand does. Although type design has made me pretty comfortable with Bezier drawing, I still am most comfortable with ink and a brush. My latest type experiments have been trying to find the happy medium by taking my actual vectors from ink on paper. Still trying to find the right balance.

Raph: Matthew mentioned this earlier—but I'm having the same control issues with the Mac.

I am really excited about the possibilities of this, because this actually starts to feel like drawing or painting on screen.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

> I still am most comfortable with ink and a brush.

Users don't need your comfort, you need theirs.

hhp

Dan Gayle's picture
Offline
Joined: 17 May 2006 - 7:00pm
0

"Fortunately, because I am a rocket scientist, I can do that."
–Raph Levien

This has got to be the greatest quote, ever.

This sounds really cool, but can anyone inform me how unique and/or important this is? On a scale from the invention of the spork to the invention of beer, where does it stand in relative terms of type and type design stuff?

Mark Simonson's picture
Offline
Joined: 3 Dec 2001 - 11:00am
0

Thanks, although i only get the part about where it saves (and although I get it, am unable to find these directories)

I can't figure out where comman-S saves the "plate" file, but the PostScipt file is pretty easy to find: Choose "Go to a folder..." from the Go menu in the Finder. Type "/tmp/ and hit return. The file called "foo.ps" is the PostScript file that is created when you hit command-P. Rename this before you generate a new one. It can be opened in Illustrator (or whatever).

Note: Don't mess with any of the other files in /tmp/ or you could be sorry. I would also recommend moving the PS file(s) to somewhere more convenient.

Tobias Kvant's picture
Offline
Joined: 15 Feb 2004 - 3:49am
0

I can’t figure out where comman-S saves the “plate” file
It goes straight into your system root directory, at least here it does..

David Berlow's picture
Offline
Joined: 19 Jul 2004 - 6:31pm
0

Ralph: "How’d I do?"
Extremely well. In fact, I could only be caught quibbling with your spiral point positions on my laziest day, and I would not spend any time to argue with the output quality of the cubics.

The next thing I'd like to do is see how easy it is to pull contours apart and reconstitute them as new letters, new weights and new widths.Really well done and I look forward to any sort of progress this can make.

Cheers!

Peter Enneson's picture
Offline
Joined: 21 Mar 2005 - 1:17pm
0

[Hrant] I certainly hope not.

It stands to reason that where a curve-fitting routine finds inflection points might be diagnostic of contrast type. And it seems to me that one of the things we ought to want to get a handle on is the logic of contrast in a co-ordinated glyph set. (But this might be where points of view diverge: that following such a logic is contributory to readability.)

My visual argument suggested perhaps spiro has an advantage over beziers in providing this. But even in the bezier environment finding extermata can be revelatory of stress axis and diagnostic of it's consistency or pattern of departures.

Graham Taylor's picture
Offline
Joined: 1 Feb 2006 - 3:53pm
0

@mark/Toby: cheers guys, found the folders, however still can't find the files. I've searched the whole of the computer for "foo.ps"using spotlight and can't find it so who knows, but it don't matter it was just a doodle to test, I'm just impatient to be able to utilize this new tool.

Thanks

Graham

patternmaker's picture
Offline
Joined: 8 Mar 2004 - 11:00am
0

Graham

Spotlight doesn't search invisibles. In the Finder, use Go to Folder (command-shift-G), type in "/private/tmp/", click the Go button and the window that opens should contain the foo.ps file.

Graham Taylor's picture
Offline
Joined: 1 Feb 2006 - 3:53pm
0

Ah, nice one patternmaker. Cheers.

G

Carl Crossgrove's picture
Offline
Joined: 8 Sep 2003 - 2:07pm
0

"And it seems to me that one of the things we ought to want to get a handle on is the logic of contrast in a co-ordinated glyph set."

Peter, I would say not. The "logic" of almost anything in type design tends to be very occasional, inconsistent, and useless if followed too completely. From serif length to contrast to bowl shape to stress angle, these things tend to look bad and function badly when systematized too completely. Greek and Arabic types especially would not take well to this logical approach or analysis.

"Users don’t need your comfort, you need theirs."

Hrant, Terry said ink and brush. It doesn't sound like he's working on a dictionary typeface.

Peter Enneson's picture
Offline
Joined: 21 Mar 2005 - 1:17pm
0

[Carl] "[…] useless if followed / systematized too completely."

I agree, but a consistent contrast scheme will be in evidence I should think, and this has an overall impact on the root mathametical structure of the curves, which then becomes unique--in a deep-structure sense--to that typeface.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

> where a curve-fitting routine finds inflection
> points might be diagnostic of contrast type.

I don't get how, but/so it sounds interesting.

> one of the things we ought to want to get a handle on
> is the logic of contrast in a co-ordinated glyph set.

My view is opposed even here, even before you get to the part about readability. To me we need all the help we can get to ween ourselves off of chirography, and a tool that's poorly coordinated with chirography is preferable to the opposite.

> My visual argument suggested perhaps spiro has an advantage
> over beziers in providing this. But even in the bezier environment
> finding extermata can be revelatory of stress axis and diagnostic
> of it’s consistency or pattern of departures.

I'm seeing the opposite, since spirals apparently have less of a dependency on extrema. There's also another potential way spirals might help us grow up: if for some reason it's harder to do an "expand stroke" on a spiral compared to a bezier, making "skeleton-based" type design becomes less attractive.

> Terry said ink and brush. It doesn’t sound
> like he’s working on a dictionary typeface.

What I meant applies to any type, in fact to any act of Design.
As opposed to Art. Users don't care about Terry, and they shouldn't.

> a consistent contrast scheme

Formal consistency is often dysfunctional when it comes to what humans need.

hhp

Carl Crossgrove's picture
Offline
Joined: 8 Sep 2003 - 2:07pm
0

Raph, I'm having a hard time mentally linking an outline description format and any particular set of shapes made with it. This idea seems very tenuous and hopeful. What do you think it will lead to that is of interest to type designers? I can imagine all kinds of outcomes of interest to mathematicians.....

"Users don’t care about Terry, and they shouldn’t."

These two statements might also be a matter of opinion. We do tend to admire people who make things we love to see/use, and I suspect Terry is one of those. Ignoring esthetics is foolish. It's a meaningful ingredient of any design effort.

Hrant, I fully agree that chirography, or fashion, or convention, or any other isolated factor is unhealthy to fixate on. But condemning them as causal of some sort of degradation, disintegration or arrest of progress seems also nearsighted. I'm interested in a balance of ideal function and esthetic appeal (physically as well as visually), and in all areas of design. It is amusing sometimes to see a chair that looks painful and dangerous, which turns out to be rapturous to sit in, but you then have to trick people to sit in it the first time. And I don't see these ingredients/concerns as so opposed as you seem to. Yes, of course it's misleading to fixate on chirography, or "logic" or rules or ink traps, to the detriment of everything else. But I don't think Terry is at that point. We all converge in the type world from very different paths. Bitmaps for example. Or math.

Central to this thread is how to get tools (like Raph's) into our hands so we can stop noticing or being influenced by them, which relates to Terry's comment. Raph might actually like to know how people prefer to work. Whatever method or technique people start out with, you have to agree it's the results that matter.

Now I'm plagued by mental images of text type drawn with ink and brush..... 8D

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

> Ignoring esthetics is foolish.

Agreed, especially since: it can be enjoyable; and there's no avoiding it anyway. But, as I've stated before, to me the difference between Art and Design (neither of which exists in a pure state) is the intent of the creator in terms of expression.

> you then have to trick people to sit in it the first time.

This is the sort of thing I believe in too.
Hence Paphos (far right): http://www.themicrofoundry.com/s_latin.html

hhp

Terry Biddle's picture
Offline
Joined: 21 May 2005 - 1:42pm
0

Users don’t care about Terry, and they shouldn’t.

Talk about a massive overstatement! You've missed the point entirely. This isn't about any individual person. It's about making a useful tool for people to use. Nothing more. There's no such thing as a fool-proof, universally accepted method. In fact— FontLab and Illustrator handle Beziers very differently and because of that "users" prefer different methods. Some type designers use Illustrator and import into FontLab—some use FontLab only, and some still even use Fontographer. So your statement is a complete oversimplification. I often find the critical flaw in many of your opinions is that they're based too much on the idea of "absolutism." Life is not all black and white.

Hrant, you're too smart of a guy to make outrageous statements like this. Your fixation on chirography is very apparent to most frequenters of Typophile I'm sure, so it's no surprise that you've twisted words to make your point.

I find it amusing that this is the very thing I've seen you criticize William Berkson about time and time again— you're too literal. Try reading and understanding a person's intent before reacting. And if something is not stated clear enough for you...you can always ask a question. I would have been happy to explain myself more clearly. But I'm sure just reacting is a lot more fun.

Carl: thanks for clarifying things. That is exactly what I meant.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

I'm as gray as they come.

It's about balance. When I seem too radical it's because the situation is desperately lopsided, and the balance needs a firm kick to right itself. Gentle, gradual cajoling will not work, at least not in one person's lifetime, and I'm not going to get my offspring to pursue my own ideals - I have to do it myself. When a person is hysterically out of control, you deliver a well-meaning slap in the face. (I don't mean you, I mean the field of type design.)

But I really don't want to derail this thread, which is why I didn't reply much more fully to Carl's post. But you went a hair too far, so I felt compelled to write the above, sorry.

hhp

Carl Crossgrove's picture
Offline
Joined: 8 Sep 2003 - 2:07pm
0

Hrant, I have never seen any more of Paphos than this j. Is there a secret link to more of it? it sounds good... ;)

On topic: I imagine that I could get used to using this drawing method, and the possibility of ignoring the eventual pixel grid is attractive. David Berlow raises an interesting question: How easy to cut and paste, how easy to grab and stretch large segments, how easy to interpolate? All figure into my production flow. I also don't like the idea that the outlines I draw carefully must necessarily go through a conversion process unless I am very very confident of the conversion algorithm, and I'm really picky in that area. PS outline drawing has the advantage that the exact shapes I draw are what the user will receive and use.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

The Paphos alphanumerics are all roughly drawn (on paper). But I've stopped working on it mostly because I'm intellectually not ready to finish it.

Here's something of it I've shown on Typophile before:

> unless I am very very confident of the conversion algorithm

Did you miss the French curve challenge on page 1 of this thread? It looks like the conversion algorithm (although apparently not too fast) produces very fine results, without causing an infestation of bezier nodes.

hhp

Carl Crossgrove's picture
Offline
Joined: 8 Sep 2003 - 2:07pm
0

I did see the conversion; I've actually seen/used better. That's why I say I'm picky. Also it's not enough for me to assess this low-res image onscreen. I do suspect, though, that the results are likely to be very very good. I just don't want to lose the newly-won ability to have designs reproduced exactly, without interpretation. The new tool should provide benefits that override that issue, or there should be a conversion method that obviates it.

Christian's picture
Offline
Joined: 16 Apr 2005 - 10:57am
0

I've tried a bunch of linux distros, and there is some exciting stuff going on, but unfortunately x11 is pretty gross there too ;) Otherwise, I use a ton of free software, and love it (everyone should try Blender for 3d stuff). Someday I'll be smart enough to contribute code to some of my favorites. In the mean time, I drew some cleaned up characters for the Ubuntu title font, but I haven't figured out how to submit it back to the project.

Dave Crossland's picture
Offline
Joined: 14 Feb 2007 - 1:47pm
0

@Christian: Wow! your Ubuntu title font is an excellent contribution! I hope this becomes the new upstream version as Andy Fitz suggested in the comments of your blog! :)

Matt Chisholm's picture
Offline
Joined: 22 Feb 2007 - 1:24am
0

These curves are great to work with. I strongly encourage everyone who hasn't yet downloaded and tried Spiro to do so. Raph, when I first read about your idea to use Cornu spirals to lay out curves a few years back, I was skeptical, but Spiro lives up to your promises. It is easier, quicker, and feels more natural.

Here's something I did in ten minutes. It's not production-ready or anything, but I've been working with Beziers for at least twelve years, and I don't think I could do something that looks this good in ten minutes in FontForge, Inkscape, or any other Bezier program.

David Berlow's picture
Offline
Joined: 19 Jul 2004 - 6:31pm
0

"I just don’t want to lose the newly-won ability to have designs reproduced exactly, without interpretation."
So, do you make one-size-fits-one fonts too!? That's so exciting!

"The new tool should provide benefits that override that issue, or there should be a conversion method that obviates it."
That is my basic point here. I want to make containers, not vontainers for containers, or like this containers for containers for continers, unless the content remains precise through the first two container transfers at least.

Tim Ahrens's picture
Offline
Joined: 28 Sep 2004 - 9:15am
0

Raph, that tool is very exiting, I think it solves some major problems with Bezier curves. I have a few comments and questions:

1. As far as I can see, Spiro is essentially a tool that takes on-curve points as input and outputs Bezier curves. Could you explain the benefit of using spirals as an intermediate step? Wouldn't it be possible to find Bezier splines that run through the given points with G2 continuity? Doesn't the problem of G2 continuity still remain when two spirals are connected?

2. It seems that the main differences to direct Bezier editing are:
a. built-in G2 continuity, which is great but G2 continuity can also be enforced automatically for Bezier splines (as I have shown in Lisbon last year)
b. no off-curve points, which is great
c. no need to specify tangents for on-curve points, which is great
d. no possibility to specify tangents for on-curve points, which is very odd

I think for practical type design application it is very important to be able to specify tangents for your on-curve points, which Bezier splines allow but not Spiro. Would it be possible to add support for tangents? Then we would actually have the best of both worlds. Also, I think an option to specify tangents without the position of the on-curve points would be a very handy in everyday type design

3. What about rounding errors? The restriction to 1000 units seems to be built into T1/CFF, isn't also the use of integer coordinates a requirement of Postscript fonts? Or is this just an FL-internal restriction? If not, looking at the (un-rounded) Postscript output is irrelevant - we need to see the final shape in fonts with coordinates rounded to integer numbers and 1000 UPM.

4. You say that Multiple Master technology does not preserve G2 continuity. It is my experience, however (in hundreds of cases), that G2 continuity is in fact preserved when interpolating Bezier curves with MM. I don't know whether it could be proven that this is the case under certain conditions (or under which conditions, to be more exact).

Thanks,
Tim

Stephen Hartke's picture
Offline
Joined: 1 Mar 2006 - 11:44pm
0

@Tim: but G2 continuity can also be enforced automatically for Bezier splines (as I have shown in Lisbon last year)

Could you please explain more about how to enforce G2 continuity for Bezier splines? (or provide a reference) Thanks!

Raph Levien's picture
Offline
Joined: 8 Aug 2004 - 11:00am
0

Tim: thanks for your kind words, and even better, your good questions. Some of these questions require fairly deep answers, to which I would refer you to my thesis (I'll put the draft-in-progress online in the next day or two). But I'll try to at least scratch the surface here.

Could you explain the benefit of using spirals as an intermediate step?

Yes. G2 continuity is not the only smoothness property you care about, it's just really crisp and easy to measure. You also want to make sure that the curvature doesn't have any sharp peaks in it. But there is no agreement on what is the best way to quantify this. In my thesis, I refer to Potter Stewart's (meta)-definition of obscenity, and then go on to propose the L∞ norm of the deviation of curvature as the most favored measure of curve smoothness. To all those naysayers out there who feel it should be the L2 norm, I say: fie unto you.

If all you cared about was G2 continuity, Beziers do OK. Manning showed a G2 continuous cubic spline in 1973 (it was used, apparently, for shoe insole shapes). However, for very large turning angles between the on-curve points, his spline sometimes did not converge to a unique solution. Hobby's 1985 splne (used in Metafont, and thus how I got hooked on this stuff) was influenced by Manning's, but traded off exact G2 continuity (it uses a good approximation of curvature instead) for bulletproof stability of the solutions.

But neither of these curves look pretty if you try to make, say, an S segment that turns 90 degrees one way and then the other - you get curvature peaks at about 15% and 85% of the arc length.

So spirals deal with both problems: you never get a curvature peak except at the control point. Also, (and I'm still nailing this down), you can get very good stability. The specific divergence of Manning's spline is definitely avoided, but I don't know for sure whether the Euler spiral spline always converges, or just almost always.

Wouldn’t it be possible to find Bezier splines that run through the given points with G2 continuity?

Yes, Manning's is one such. But the results are quantifiably not as good. I'll have illustrations in my thesis, I promise.

Doesn’t the problem of G2 continuity still remain when two spirals are connected?

That's exactly what the goal of the spline solver is: find Euler spiral segments between all adjacent on-curve points so that curvature is continuous across them. Once you take that as the challenge, it's not too difficult to work out numerical techniques to take it on.

Would it be possible to add support for tangents?

Yes. In fact, I originally planned to do exactly that, but generally found that I didn't need it for my own work. If other people find they need it, it's doable. Inside the solver, the constraints are written as a big matrix, with parameters corresponding to tangent angle, curvature, and so on. It's a matter of UI plumbing to let people write more kinds of constraints, including tangents. I was very concerned about UI complexity, though.

What about rounding errors? The restriction to 1000 units seems to be built into T1/CFF, isn’t also the use of integer coordinates a requirement of Postscript fonts?

John spoke well to the 1000 unit issue. But the short answer is no, the div operator lets you do rational fractions, which means more or less unlimited accuracy. The only real downside is that the font file gets quite a bit bigger.

That said, I also expect good results with rounded coordinates, because it chooses the minimal number of Beziers, and therefore long segments. Rounding becomes more visually noticeable as Beziers get shorter. (This is deep water that I expect to cover more deeply in my "converting to Beziers" chapter - in order to make sense of it, you have to adopt a different error metric than "max distance error". I argue for L2 norm of angle error as an error metric that more accurately models the perception of curve smoothness)

It is my experience, however (in hundreds of cases), that G2 continuity is in fact preserved when interpolating Bezier curves with MM. I don’t know whether it could be proven that this is the case under certain conditions (or under which conditions, to be more exact).

In the general case, it doesn't even preserve G1. An example is given in Figure 2-8 of Adobe's tech note 5091. I can imagine that you learn quickly enough to stay away from those cases, but my point is that the onus is on the designer. With spirals, you do get the G2 continuity all the time, without having to worry about it.

I would imagine that G1 continuity is always preserved when the angles of the control arms are consistent between the masters. This is, of course, always the case at extremal points, which is probably the main reason why they're such a big deal.

It's when you get into more subtle variations, the kind that just can't be done with a single long Bezier segment, that it's harder to control the smoothness.

Here's another interpolation example I whipped out quickly:

As you can see, the curvatures of the fat S are quite different from those of the thin - the radius on the inside bowls is quite small. And all that was done with 17 on-curve and 4 corner points. I've also put up a PDF for people who want a closer look.

John Hudson's picture
Offline
Joined: 21 Dec 2002 - 11:00am
0

Tim: The restriction to 1000 units seems to be built into T1/CFF

It is very strongly recommended for Type 1 fonts, i.e. things are expected to break if you use a UPM other than 1000. But it is not a requirement for CFF fonts. I've made CFF fonts with UPMs of 2048 and 4096, and they work fine. There were largely aesthetic problems in pre-CS2 versions of Adobe apps, which presumed a UPM of 1000 for calculating caret height, but that's fixed now and I have not seen other problems with using UPMs other than 1000.

Tim Ahrens's picture
Offline
Joined: 28 Sep 2004 - 9:15am
0

Wow, I didn't know your whole thesis is on this subject. I'm very curious to see it. Thank you very much for your detailed answers.

As for the PDF, it would be interesting to see the Spiro based interpolation next to an MM generated version. Do they differ much? If you want you can send me a font file and I can do that interpolation based on Bezier curves (with some preparatory MM optimimations). It looks like your interpolation also can't avoid the problem that in the interpolations the stroke at the center of the s is too thin (being inherited from the extra bold, where it is necessary). I assume this problem can't be solved on a contour basis.

Finally, I have to admit that I do not find the curve of the s in your PDF harmonic at all, especially the three lightest versions. Maybe it is just my subjective perception. To me the disharmonic shape becomes apparent only in the lowest line, where it is filled in. Maybe the initial reactions here in this thread would not have been that enthusiastic if people had seen their shapes filled in? Sorry, no offence, your stuff is great.

Tim Ahrens's picture
Offline
Joined: 28 Sep 2004 - 9:15am
0

sgh:Could you please explain more about how to enforce G2 continuity for Bezier splines?

It basically works like that:

Nodes that connect two Bezier curve elements are shifted towards the wider curve until the curvature on both sides of the node is equal. During this, the BCPs of both cureves are adjusted so that the shape stays as close as possible to the original: for non-s-shaped curves the BCPs are adjusted so that the area within the curve stays the same (taking into account that thin triangle created by the shifting of the node). For s-shaped curves, the BCPs are adjusted so that the curve stays as close as possible to the original, meaning the curve is split in two and both areas within the "half curves" stay the same as before.

Alternatively, nodes that are not extrema can be rotated (towards the narrower side) until the curvature is equal on both sides. BCPs are adjusted as above. I feel this gives better results thatn shifting but it is obviously not possible for extremes.

In addition, I am experimenting with G3 continuity, which obviously means that nodes are shifted perpendicular to their tangent until G3 continuity is given.

Note that this is a system that processes existing shapes - it does not generate shapes. I think this approach is much more appropriate to the typical design process.

Stephen Hartke's picture
Offline
Joined: 1 Mar 2006 - 11:44pm
0

Tim,

Thanks for the description. I've seen the simpler technique of shifting the on-curve node between the fixed off-curve control points mentioned before. In the construction of Aurulent Sans I actually have macros that automatically adjust curve nodes in this way to achieve continuous curvature (this is done after the basic shapes are constructed as a finishing touch). MetaPost's Hobby splines are sometimes discontinuous in curvature when I specify more about the curve (such as tangents, etc). I'll think about rotating points non-extreme curve nodes. Is solving for the rotation to achieve continuous rotation numerically stable?

In addition, I am experimenting with G3 continuity, which obviously means that nodes are shifted perpendicular to their tangent until G3 continuity is given.

Assuming that "G3 continuity" means continuity of the derivative of the curvature, can this in general be obtained with cubic Bezier curves?

William Berkson's picture
Offline
Joined: 26 Feb 2003 - 11:00am
0

>I feel this gives better results than shifting

Like everybody now, I guess, I do this 'taking out the bumps' stuff by eye, rather than algorithm.

I have usually found it easier to slide nodes (using the shift key in FontLab) than to change the angle of smoothly connected bezier handles. Changing the angles of handles seems to mess up the 'other' curve--the one you don't want to change--more than sliding the node.

If you are free to move around the angle and length of one handle, because there is a sharp connection, and the other node is at an extremum. then it is easier. But then curve continuity across the node is also not an issue.

Also, to sound a different note here, I think the issues of proportion, weight, contrast, and connections of all the parts of glyphs are more important to text faces than the exact curves, which are not so visible at text sizes. Though sweet curves are an important part of the story, they aren't the biggest part of the story.

Raph Levien's picture
Offline
Joined: 8 Aug 2004 - 11:00am
0

@Tim Ahrens: Finally, I have to admit that I do not find the curve of the s in your PDF harmonic at all, especially the three lightest versions.

You're right, it kinda sucked. I was trying to do it with too few points, and too quickly. I spent a little more time on the example, doing a couple of printed rounds instead of entirely on screen, and I'm sure you'll agree that the results are more satisfactory. Sweet curves are, as William points out, no substitute for a careful eye and a willingness to refine the outlines until they're just right. But I do think sweet curves can help that process, and certainly make it more enjoyable.

The new PDF is here, and this time I've included the filled versions in the image:

@sgh: Assuming that “G3 continuity” means continuity of the derivative of the curvature, can this in general be obtained with cubic Bezier curves?

You can bring the error (discontinuity) down as far as you like, by using more curves. The default in Spiro is actually G4 continuity, but I'm switching to G2 as the default because it's easier to control, and the extra continuity isn't really visible except under extreme scrutiny.

MetaPost’s Hobby splines are sometimes discontinuous in curvature when I specify more about the curve (such as tangents, etc).

Well, they're always discontinuous in curvature, just not by much. But yes, when using a two-parameter spline (such as Hobby's cubic primitive or an Euler spiral), specifying the tangent makes the curvature quite discontinuous.

It would be interesting to experiment with G2 continuity with tangent constraints using a four-parameter spline. My guess is that it's possible, but it might not be easy to control, i.e. if the tangent is significantly different than the one that would be assigned automatically, it might cause ripples in neighboring segments. But it's hard to know for sure until it's implemented. I'm not sure if I'll have the chance to do that any time soon. Time to grow new rocket scientists!

Integrating Spiro splines into MetaPost would make a huge amount of sense. The integration would have to be relicensed under the GPL, and of course somebody needs to do the work. But I think it would be excellent closure, because the Hobby splines are what started me down this path in the first place.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

Try a narrower "S" (otherwise you'll have to make the diagonal flatter).

hhp

Stephen Hartke's picture
Offline
Joined: 1 Mar 2006 - 11:44pm
0

Raph, how do you load a background image in ppedit? When ppedit is compiled using x3, it seems that it does not load /tmp/foo.ppm.

Yuri Yarmola's picture
Offline
Joined: 9 Dec 2002 - 11:12am
0

This is very interesting! I was always looking for a good way to have description of outlines without off-curve points and Sketch mode in FLS is an example of this approach. In that case we decided to make curve math compatible with Ikarus outlines (while based on different math) and that was not a best approach. Other methods that we were checking provided much smoother results but were not point-compatible with .ik files.

What about Peter Karow's approach to construction of outlines using spirals? Is rougly the same idea? (It is on page 86 in English edition of his book.)

Few words about our future approach to different editing methods: the biggest problem of current Fontlab tools is that all of them mix production with design. We plan to separate it and offer plugin architecture for editing content of glyphs.

There will be only two minimal requirements: plugin must resterize (with smoothing of edges) and provide at least a conversion to and from Bezier outline.

Raph Levien's picture
Offline
Joined: 8 Aug 2004 - 11:00am
0

@yuri: What about Peter Karow’s approach to construction of outlines using spirals? Is rougly the same idea? (It is on page 86 in English edition of his book.)

Only roughly. The spiral shown on page 87 isn't Karow's, it's from the Purdy-McIntosh system (I have a bunch of references if anybody's that interested). Basically, the results are good, but the way they have it set up it's very hard to edit: the user has to put in all the spiral parameters explicitly. In my approach, the computer solves a global system determining the spiral parameters, based on curvature continuity constraints at the on-curve points. Completely original to my approach is the "one-way" constraint, which gives you continuous curvature at straight-curve joins (and is more general - the "straight" section can have a slight bend to it, and it solves that too).

We plan to separate it and offer plugin architecture for editing content of glyphs.
There will be only two minimal requirements: plugin must resterize (with smoothing of edges) and provide at least a conversion to and from Bezier outline.

A plugin is an entirely satisfactory approach all around. But let me understand more fully, by asking some questions:

* Will it be possible to write interactive editing plugins in Python and have them work cross-platform?

* To do the rasterizing, as you say, can my plugin generate a (crude) Bezier and hand it off to a FontLab-supplied API for the rest?

* I assume that the plug-in also gets some kind of API for marshalling and unmarshalling the plugin-specific format into the FontLab database file. Is this correct? For what I need, JSON would be ideal, but other choices would also work.

I agree that combining "design" and "production" has serious disadvantages. I have come to believe that the best approach is to generate high-fidelity "masters" using a design tool, ideally with parameterization, and then have a batch-mode converter to freeze those parameters, quantize to a specific Bezier grid (either cubic or quadratic, although at this point I only have optimized conversion to cubics done), and generate the font file.

I also agree that it's possible to do quite a bit better than the .ik file format. It was pretty good for its time, but there's lots that I know now that just doesn't fit into the .ik approach. (Incidentally, the Ikarus spline is one I look at carefully in my chapter comparing two-parameter splines, along with the Hobby (Metafont) spline, Minimum Energy Curves, and, of course, Euler spirals).

I haven't actually played with the Python capabilities in FL5 to see what's possible, only looked at the documentation. It might be possible to do a useful prototype.

@sgh: no, the 0.01 x3 build doesn't load a background image at all. Sorry. It's obviously not that difficult a feature to add, because I do have it in the gtk1 version, but I just haven't gotten around to it, and I'm not sure when I will have time to do so. I was kinda hoping others would pitch in on the coding, but that hasn't happened (yet) either.

@hrant: narrower "S". I know. But at some point we cross the line from "what the tool can do" to "how good is Raph at font design." I'm middling-good and hope to get better, but that's kind of off the main topic of this thread.

Ultimately, I think it will take a number of people spending time with the tool and learning how to get good results before we can definitely answer the former question. People spend months, if not years, learning how to draw top-notch Beziers. I strongly suspect that the learning curve is easier for spirals. The big unanswered question is whether the results are better once you've climbed it.

Christian's picture
Offline
Joined: 16 Apr 2005 - 10:57am
0

Yuri, a plugin architecture allowing for different curves in fontlab sounds fantastic. I would love to explore a nurbs based drawing environment, for example. It would solve the licensing issues for this technology too :)

Yuri Yarmola's picture
Offline
Joined: 9 Dec 2002 - 11:12am
0

Yuri, a plugin architecture allowing for different curves in fontlab sounds fantastic. I would love to explore a nurbs based drawing environment, for example. It would solve the licensing issues for this technology too :)

That's why we plan to implement it.

There are many possible ways to draw outline. I personally experimented with several types of splines, some "centerline" methods, Ikarus curves etc. Even in FLS you may find 5 different ways to build outline: 2 types of curved in "main" mode, Sketch mode (some type of spline, point-compatible with Ikarus outline), Primitives (which is "object" UI) and some strange method to use components as "blocks" to build outline with autojoin function (not really useful and never documented).

Only "main" mode actually survived and is used to draw, all others are more or less "experimental".

Oh, there are few more: in standard FLS distributive you may find 3 "Python tools" which are good examples of how this spiral-based technology may be integrated even into FLS5.

Two tools are Line and Curve (latter shows some rudimentary auto-curvature control) and third is called Drops. It creates random-size circles if no tablet is connected. With pressure-sensitive tablet size of the circles depend on pressure.

Actually it is very interesting challenge to integrate spiral-based editing tools into FLS using Python tool gateway :-)

Claus Eggers Sørensen's picture
Joined: 17 Jan 2007 - 5:49am
0

Few words about our future approach to different editing methods: the biggest problem of current Fontlab tools is that all of them mix production with design. We plan to separate it and offer plugin architecture for editing content of glyphs.

Yes thats exactly the 'problem' with Fontlab. It's not really a designers tool as it is. An open modular approach sounds great.

Hrant H Papazian's picture
Joined: 3 May 2000 - 11:00am
0

Yuri, great of you to show up!

> at some point we cross the line from “what the
> tool can do” to “how good is Raph at font design.”

Yes, but if you remove the latter (never fully, but much more
than with that "S") you'll have a better view of the latter.

So my advice was practical: make the "S" narrower, and people
will generally get a better idea of how good the spirals are.

hhp

Yuri Yarmola's picture
Offline
Joined: 9 Dec 2002 - 11:12am
0

* Will it be possible to write interactive editing plugins in Python and have them work cross-platform?

It is possible even now. Spiro data may be stored in glyph dictionary (Python-accessible storage for arbitrary data). Python tool API allows to redefine mouse events and window paint function, but that is currently very limited.

In future implemenation plugin API (both for Python and for general coding) will be greatly extended.


* To do the rasterizing, as you say, can my plugin generate a (crude) Bezier and hand it off to a FontLab-supplied API for the rest?

By rasterization I mean conversion to 8-bit grayscale bitmap. While conversion to Bezier is OK, it will be much faster if Spiro outline is converted to supersampled vector-only outline. Then it can be passed to system or Freetype rasterizer to get bitmap.

What I mean is that in furure plugin architecture we will define minumal set of plugin functions that are required for it to be included into FLS as "layer editor". That will include on-screen outline rendering, conversion to Bezier outline, rasterization to grayscale bitmap, serialization (it should store data in its own format and Bezier format for compatibility reasons) and UI integration. This plugin architecture is currently in early stage of development, so many more details will emerge as we move forward.

* I assume that the plug-in also gets some kind of API for marshalling and unmarshalling the plugin-specific format into the FontLab database file. Is this correct? For what I need, JSON would be ideal, but other choices would also work.

Future database format will be very different to what we have now. It will allow to store glyph layers in any format that is required by any of plugins.

.ik format: I think that computer power available at the time was an issue when Ikarus was developed. It is actually based on very simple math, which has many limitations. That is the reason why in sketch mode of FLS we are using some approximation of Ikarus curves with splines. That gives much more flexibility to outline (it can be solved with any position of points) while keeps it very close to .ik shape.

Mike's picture
Offline
Joined: 13 May 2005 - 10:08pm
0

I am not a type designer, however, I hand draw and build alot of identity pieces by hand and would love to have a PC version of this to try out. *hint hint*

I do have a stack of type ideas that might get due consideration if this is as intuitive as it sounds.

Derya Öztürk's picture
Offline
Joined: 9 Jan 2003 - 10:29am
0

I'v tried to use the app on a mac os x 10.4. It is a great tool and I would very highly appreciate it, if you would work further on this application. Especially for the mac. It makes the best curves on earth!

recommendations:
- better UI (for example a toolset beneath the drawing window)
- export function in different formats (.ai, .eps, jpg)
- lineals would be also great
- a info window to see exactly where the points are lying
- function to underly a scanned image

once again thank you very much for this little app. I think it will have a great future.

Cheers
Derya

p.s. maybe you could make it work as a plugin for illustrator? I would be more than willing to pay for it.

Daniel Denk's picture
Offline
Joined: 7 Jun 2007 - 12:28am
0

Wow, this is an impressive curve technology tool. Is there any chance that a ported Windows build is available?

If not, how far along is the port -- I might be able to get some interest in development on the project. The developers I know though would probably want to port everything C++ with the QT GUI framework, to make it fully cross-platform.