Page 1 of 1

Weight matching

Posted: Wed May 24, 2017 2:31 am
by IanRG
Can a way be created to balance weights between selected glyphs in a font? (or is there already a way?)

By which I mean: When I created the individual characters for a font the initial letters were not necessarily consistent in widths at equivalent parts of each letter. This was subsequently achieved by using CorelDraw 2017 and then importing .SVG files back into FontCreator. Can there be a way that you can tag the width of say, the width of an "o" at its left side turning point and a "d" at the same point and get the program to scale the widths proportionally across both letters without changing the boundaries so they then have the same width and proportions across the design?

Re: Weight matching

Posted: Wed May 24, 2017 3:58 am
by Bhikkhu Pesala
This seems more like a support question than a feature request, so I moved it.

If some glyphs look too light compared to the others, select them in the glyph overview and apply a slight Bold transformation. Or, if some are too heavy compared to the others, apply a slight Thin transformation.
  • Copy the selected glyphs first because transformations cannot be undone
  • Apply the transformation
  • Paste the copied glyphs back into the same place
  • Undo the paste operation
You can now compare before/after results using Redo/Undo, then adjust the transformation by a few funits and repeat the process. The animation shows the effect of applying a horizontal bold transformation of 20 funits to just the vowels.
Bold Transform.gif
Bold Transform.gif (41.08 KiB) Viewed 4389 times
Use the measure tool or the statusbar to find the precise width of the glyphs that look too thin, and the width of those that look OK, then calculate the transformation. A horizontal transformation of 20 funits adds 40 funits to each vertical stroke — 20 to each side.
Measure Stroke Width.png
Measure Stroke Width.png (14.55 KiB) Viewed 4388 times

Re: Weight matching

Posted: Wed May 24, 2017 9:21 am
by IanRG
No, I tried the bold transformation tool and this is a new feature request.

The bold transformation tool is just a scale tool and it changes the boundaries. In you picture the letters that are bolded are bolded in all directions - the bolded u (ignoring the serifs) is wider than the u before being bolded.

What I am suggesting is a new tool that does not change the external boundaries but changes the weight only by changing the internal dimensions (ie for loop (a b d e g etc.) or open loop letters (a c e h etc.) but not l, t f. One that changes the weight by internal curves leaving the external curves untouched. As per my original post, say the width at the left side turning point of "o" is 120 and for the "d" it is 135 and you want them to be same you tag the one that is the width you want and apply this to the other. This would then change the internal curves so the weight at that point is matched and the widths around the curves are proportionally changed - by changing the internal curves.

Re: Weight matching

Posted: Wed May 24, 2017 10:08 am
by Bhikkhu Pesala
It sounds impractical as a feature request. Drawing the glyphs right in the first place makes more sense than trying to correct mistakes afterwards.

A workflow that some designers use is to create the basic elements first, then copy and paste them to other glyphs.

To solve your problem, you could use the background image to check that the weights match, then adjust the nodes of internal contours if necessary.
Compare stroke weights.png
Compare stroke weights.png (46.01 KiB) Viewed 4376 times
Alternatively, cut the outer contour for the glyph that is too light/bold, run the bold/thin transform, then paste the outer contour back. Then the other contour will not be transformed.

As in my animation, the advance width does not change unless one enables "Preserve side bearings."

Re: Weight matching

Posted: Wed May 24, 2017 12:35 pm
by IanRG
Why is something that makes it easy to modify glyphs impractical?

It makes no sense to say just do it right first time so then you don't need this enhancement.

Such an enhancement would be much better than the less controllable bold transformation tool because it would be tied to a specific width and not a percentage change. It could be used to more correctly and easily create a range of different weights from the one font rather than individually changing each curve in each glyph. It would also much easier than cutting up glyphs, transforming them and sticking them back together.

This is not a support question - it is a new feature request.

Re: Weight matching

Posted: Wed May 24, 2017 1:08 pm
by Bhikkhu Pesala
IanRG wrote:Why is something that makes it easy to modify glyphs impractical?
Because of the amount of work on figuring out what it should actually do, and how to program it.

I will move it back to the Feature Request forum.

Re: Weight matching

Posted: Wed May 24, 2017 5:42 pm
by PJMiller
The Bold and thin transformations are just an aid so that you don't have to do all the work yourself. They can scale horizontally and vertially by different amounts. They are a starting point, not an end point.

The reason it is impractical for the program to do all the work itself is that scaling horizontally and vertically is not the whole story. To do what you ask the program would have to make artistic and aesthetic judgements about what should be changed and what should be left alone. As well as being fairly impractical what would be the outcome if the computers judgements about what should be changed didn't coincide with your judgements, the program could change the design of your letters in ways you didn't want.

You are better off doing the adjustments yourself because then you are in control of the outcome.

Re: Weight matching

Posted: Thu May 25, 2017 9:00 pm
by IanRG
I understand that this suggestion would be just like the bold and thin transformations - just a tool to ease the process along the way.

I never meant it would be the whole story. It is a genuine suggestion because it is currently easier to take the shapes out of FontCreator and use something like CorelDraw to do this intermediate step. If FontCreator had a better way, then this step would not be necessary.

I am only trying to help by my suggestion, if it is not possible, so be it.