Propagating Changes In One glyph To Similar Decomposed Glyphs

Richard Fink's picture

I feel like apologizing up front, because this is probably a FontLab 101 question, but let's say composites are disabled and I make a change to the lc 'a'.

How do I go about propagating - meaning that the other glyphs change along with that lc 'a'? A script? A feature that I'm missing in FL?

Any help, I'd appreciate. Thanks.


Thomas Phinney's picture

Either a script, or use components. There's no other magic feature.

This is a major headache in dealing with already-compiled fonts. For the kind of work you are doing, you should try to get FL source files when possible (in the hope that they have components already existing).

Another plus of components is that they can translate nicely to TT composites, making for smaller initial TTFs. (How much size reduction composites offer once you gzip the result is an interesting question I'd love to know the answer to....)

Thomas Phinney's picture

Oh, and you shouldn't apologize. FontLab Studio has so many freakin' features, and they are often non-obvious.... Every now and then I am trying to do something I haven't done before, and find a new-to-me feature that helps, even though I have been using it since 1994.

Trivia point: FontLab 2.5 had a different kind of subroutine feature that allowed you to do something like components, only it even worked with parts of paths! So you could for example have a serif shape as a subroutine that you could edit once and have take effect everywhere. I still miss this feature. Reportedly FontLab Studio 7 may have some serious moves in this direction again.

Thomas Phinney's picture

Oh wait, there's another option: Use "generate glyphs" and replace the previous accented glyphs with regenerated ones. That also gets you components....

frankrolf's picture

Also, there is ‘Find/Replace Shapes’. Hit F3, and mire at another totally obscure FontLab feature.

Richard Fink's picture


Thanks for verifying I haven't gone insane in that particular way as yet. And I certainly know what you mean about non-obvious. Folks can bitch about FL all they want, but it IS deep, that it is.

I'm on a public computer at the moment but will try Find/Replace Shapes at the earliest opportunity. Thanks to frankrolf

A script sounds mighty good. I've got Python installed and it works.

Does anyone have a script for this? I'm certainly willing to purchase, if need be.

(I'd love to tackle it myself, but the time factor....)



Thomas Phinney's picture

Frank, when you try fond/replace shapes, does it do anything useful with sidebearings and positioning? Maybe I was being dense, but it didn't seem to have the needed "intelligence" for this kind of operation.

I should have mentioned it, but I had forgotten about it after one or two less-than-exciting experiments. But maybe I just haven't figured it out properly.


Khaled Hosny's picture

FontForge calls it references, there is a "Replace with Reference" feature that takes the currently selected glyph(s) and replaces any occurrence of that glyph with a reference to it. Any changes any the referenced glyph will propagate to glyphs referencing it, there is also a "Use My Metrics" lock, so that the side bearings are kept in sync as well (I think the later is even a feature of TrueType fonts, not something FontForge specific). May be FontLab have similar features.

frankrolf's picture

No. No further intelligence built in! :) It really only replaces shapes inside a segment. And only in case of an exact match.
Being pretty impressive from the outset, it has the potential of a killer-feature – but isn’t. But it’s neat in certain situations. (Also, Cmd-Shift-V is.)

Mark Simonson's picture

I've found the replace segment feature to be worth learning to use, but it's sort of like having "search and replace formatting" when you would rather have style sheets.

Richard Fink's picture

Talk about mixed reviews! I'll be trying it out shortly and let you know if it solves my problem satisfactorily.
Thanks for the FontForge tip, Khaled.
This is proving unexpectedly difficult, which makes me suspect that the problem might be better solved by doing something different earlier in my usual workflow. But heaven knows what, at the moment.

Well, gotta find something, too time consuming as is.

dezcom's picture

At the suggestion of Sumner Stone, I tried using "components" as a way to design a typeface. I tried sticking with it and eventually completed the character set. True, I was able to try numerous modifications and permutations and created dozens of alternates. Surprisingly, it seemed to take quite a bit longer than I expected for the options it allowed me.

I am sure there are plenty of type designers who can work this way, but. After the "experiment", I happily went back to my old way of working. The component thing was just not a good fit for me. It requires a sense of organization and labeling that just is not me. I am more suited to open-ended flurries of doing whatever seems right at the time. I might call it my "organic method" of taking root in a form and then growing it as nature seems to provide.

This is not to say that I condemn or even cast a glance of jaundice at the method. It just means, if the suit fits comfortably, where it to work. If you are more comfortable in a T-shirt and jeans, it might not suit you to a T--(or any other glyph. ;-)

Richard Fink's picture


The way you see it, is the way I see it for me. Not my freewheeling style at all. I change my mind all the time and like to try things out. Keeping a chessboard in my head is not my idea of fun, either. I get it.

So, I'm not optimistic about avoiding the problem entirely.

However, I found one way to speed it up.
Let's say it's the lc 'e'.
I can select the row of usually composited glyphs like eacute, etc... the whole group.
Select Paste Special and check "Glyph As Component" and it pastes into all the selected glyphs.
A small win, I'll take it, until I figure out something more comprehensive.

Richard Fink's picture

Um, a little more work than I first noticed.
I have to delete the original glyph. So it's still a one by one process in that respect.
But I do end up with a composite, though. What kind of size savings that gets me, I'm also wondering.

Mark Simonson's picture

Here's a tip: Before you paste all those components, clear the mask on all the target glyphs (assuming there's nothing in it you care about), then swap the outline with the mask. Now when you paste the components, you will have the original outline in the mask layer as a reference to check that the position of the component matches.

Richard Fink's picture


Will try. Thanks.

Syndicate content Syndicate content