Shape groups

yar's picture

I started this thread to continue talk of "shape groups" or "onionskin" editing mode which I find very interesting.

What are these groups? Please, post here your suggestions. One that comes to mind is "COGQ" but I'd like to know more of them.

Are these groups "absolute" or there are different combinations for different types of font?

eomine's picture

"BPR", "EFHIJLT", "bdpq", "ceo", "hlmnr"...

hrant's picture

This is a very interesting topic to me, and gets addressed once in a while in the literature.
Tracy's "Letters of Credit" gives these groups:

With a straight upright stroke:
BDEFHIJKLMNPRU bdhijklmnpqru
With a round stroke:
CDGOPQ bcdeopq
AVWXY vwxy
STZ afgstz

The first thing you'll notice is that some letters (like "P") go in more than one group. This makes sense of course, and leads me to think that more than groups, what you're looking to categorize are base components, and each letter would have a list of components it uses. The tricky thing here I guess is deciding how detailed to go in the choosing of base components; since the forms of letters are defined very carefully, and deviate gently depending on many things (like the heads of the "B", "P" and "R" are generally different), it will be hard to come up with a list that's both useful and accurate.

The other thing is that the applicability of such grouping depends a lot on the "style" of the face - like the "M" could have straight stems in a Modern, but splayed stems in an Old-Style. So typeface categories can help here - the grouping can be different for each category. But this isn't so clear itself...

So really, grouping can only serve as a basis, and it will almost always need exceptions for a given font. This might mean it wouldn't be a huge help to a designer, and might in fact encourage modularity - which I think we have too much of already! But it can sometimes help, and it's a definite plus in comparing the glyphs in a font, as opposed to helping designers copy-paste quickly.


hrant's picture

Hey, BTW, wasn't there some Typophile guy who wrote a Flash app that onionskins the letters from a font? He said he might develop that into a full app - any ideas how that went?


yar's picture

I asked because I just added this feature to FL so it is time to fill it with some group data.

Shape group should be small, not more than 5 glyphs or it will take too much resources to draw.

I tried to combine "bdpq" in the group, doesn't work well to me, looks that it is better to split it to "bp" and "dq" pairs maybe adding 'o' to both for visial balance. Also I don't think that "AV" is a good combination for "V" which works better in "VWY" group. However, 'V' is a good companion for 'A' which doesn't have other friends.

Let me explain how it works now: you list groups in some text file which FL loads on startup. When feature is active and it finds that glyph selected for editing is a member of a group, it will show other glyphs from that group in background on top of each other.

Other idea that is close to this is "neighbours": one or two glyphs that appear on left and right sides of the glyph selected for editing, like "Hao" where you only can edit 'a' but see 'H' and 'o' all time. It will be nice to have list of these triples for all top ASCII characters.

In short: what glyphs you want to see on left and right sides of every single glyph in 33-127 range?

hrant's picture

> I just added this feature to FL

You're getting slow. ;->

> "bdpq"

I think you might need subgroups, and/or an easy way for users to choose to turn members of a group on/off. For example, when making a "d", it might be nice to have just "q" and "o" showing.

> 'A' which doesn't have other friends.

Yeah, probably because he always wants to be first.

> one or two glyphs that appear on left and right sides

This might actually work better.

BTW, see this for starters:
But it would need to be fine-tuned to this effort.
Plus it's only lc for now.

Yuri, if you can't do this all in-house, do you have a budget for this task? :-)
Because it can get pretty complex, I think. Like that chart above took me very many hours.


twardoch's picture


> Like that chart above took me very many hours.

But don't forget that Yuri is very mucho smart ;)


hrant's picture

Even though he's a reckless Alpine skier?!
KIDDING... about the "reckless" bit - well, at least I have no proof. ;-)


yar's picture

I just checked the "neighbours" idea. Works great! I must have done it years ago! I made very simple list of "triples" for "A-z" and also a default triple for glyphs that don't have personal triple. It is also possible to specify color for neighbours (which works in outline and filled mode).

It has very strange look when both new modes are activated: multiple glyphs on top of each other plus two colored glyphs on sides :-)

Speaking of skiing: well, I like to do it as bad as I can :-) I think in Prague I will show a small movie which I made after a week of pow skiing in Russia :-)

Kerning: should it be applied for neighbours?

yar's picture

Little illistration of the shape group and neighbours idea. Real colors are not as bad as they appear :-)

shape group and neighbours in FontLab

kentlew's picture

Yuri, this is very interesting.

If the neighbors concept is meant to provide similar shapes for comparison, then I don't think kerning is important or necessary. I don't see this feature as a spacing feature, but only as a shaping comparison feature.

I use something like what you're working on in my workflow, but manually; however, what I do is sort of a cross between the two. I rarely stack the similar forms (too busy and confusing). Instead I arrange them, sort of like your neighbors, in a row at equal intervals in a mask layer (well, actually, in Fog the template layer) and keep moving them back and forth into position behind the current outline so that I can compare the glyph I'm working on first with one and then another.

For instance, while I'm working on G, the template/mask layer may contain C and O. I can then keep switching first the C and then the O into position, to compare things like width, curve, top serif. I may also keep making copies of my G and transferring them back into the comparison row, to save iterations and move them in and out of position for comparison.

This is my version of "onionskinning".

For some glyphs, there may be long rows of comparisons and iterations stored in the template/mask layer.

One thing I appreciate (and rely heavily upon) in Fog is that it keeps the undo memory for each layer (and glyph) separate, so that even after several actions in the Outline layer, I can go back to the Template and command-z, command-y to toggle the C and O movement back and forth into position. This will still work even if I've worked in other glyphs for a while. When I return to a previous glyph and go to the template layer, my last actions are still retained in undo memory. I don't think FLab can do this in the Mask layer. Someone can correct me if I'm wrong.

The key shortcuts for performing these actions of copying various characters and pasting into the Fog template and switching back and forth between layers and moving them into and out of position are ingrained in my fingers and it's just like breathing now. I haven't trained my subconscious to do this as easily in FLab (as I recall, the key commands are more complex, and it involves mousing to activate the Move input in a palette, which interrupts my flow).

-- K.

hrant's picture

Yes, "neighbors" seems to make more sense than overlays here. What about this: when you open the window it starts with the neighbors arranged laterally, but you can click&drag them sideways, putting them underneath if desired.

Kerning: I agree with Kent that it's not necessary, unless it might be worth it to combine many editing abilities into one window: point editing, neighbor viewing, spacing, etc. But it might get too confusing.


yar's picture

I think that your workflow will fit very well into multiple layers editing which will not yet be implemented in the next FontLab. However it is on our list for the second update from now. I think that shape groups and neighbours will be a good start but certainly it will take few more iterations to make this new feature perfect.

I will think about making an option to shift glyphs in the shape group by some fixed amount, but I will not allow to manually position them, at least not in the next update.

I tried to support kerning in neighbours. It just looks better, but it also makes spacing editing more difficult to preview. It means that kerning for neighbours will be optional and Preferences panel will add new page :-)

yar's picture

Updated illustration of the combined group and neighbours.

Vertically oriented shape group

Mark Simonson's picture

I just noticed this discussion and the one earlier about glyph drawing. My font editor "fantasy" was mentioned so I thought I would re-post the graphic I made since it seems relevant to this discussion:


The key idea, very similar to what Yuri is proposing I think, is editing the glyph in context. I think spacing and kerning could be an important thing to include, especially for instance when working on a connecting script. The adjacent glyphs would not need to be editable, just visible either in preview or outline. This could simply be an optional layer in the glyph editing window, couldn't it?

Rather than (or in addition to) having a list of neighbor sets which are loaded at start up, couldn't there just be a couple of fields where you could type one or more for either side?

Syndicate content Syndicate content