How important are extremum points?

Sindre's picture

I've been drawing italics for a while. Lots and lots of them. So I ask myself if extremum points are necessary for any other reason than kerning? Some short, oblique curves are almost or completely impossible to draw without leaving a red arrow here and there. Is it safe to leave them?

hrant's picture

Kerning? It's more about hinting. You should try hard to put them in, and there's almost always a decent way to do that.

hhp

Sindre's picture

Uh, I meant hinting, of course. I forget language when in designer mode. I'm talking about micro-stuff like this:

As that corner is 10 x 10 units, it can't possibly mess up the hinting, can it? But can it mess up something else? I've struggled a lot with all those corners, but I'm starting to think that's a lot of work in vain.

hrant's picture

Indeed, many people (including even Slimbach) do leave out extrema from such small details.

hhp

Sindre's picture

Then I'm one of those people from now on. Prettier details for less work is too tempting.

nina's picture

I wonder about that too. I remember having to add a bunch of such fiddly extrema for Ernestine’s Italics (remember, Hrant? ;-) ). I don’t remember why though (sorry).

hrant's picture

Yes, "great" memories... :-/
But those were much bigger features.

hhp

eliason's picture

I wish programs that had an "add missing extrema" function could be set to do so "except for segments shorter than n".

Sindre's picture

That is actually a brilliant idea, Craig. May the right software developers read this.

frankrolf's picture

Such exceptions are accepted, as can be read in the original T1 specification:

Here is the document:
http://partners.adobe.com/public/developer/en/font/T1_SPEC.PDF

eliason's picture

I'll go post it at the Glyphs forum now. The developer certainly reads that.

hrant's picture

Yes Craig, great idea. Another good feature would be to automatically move a tangent point (if present) further away (by some amount/proportion determined by the designer) before inserting an extremum, thus reducing grid artifacts.

hhp

Jens Kutilek's picture

Nina kindly asked me to comment on this thread, probably because we (FontFont) resp. our outline guidelines were responsible for lots of the extremum points she and Hrant had to put in on Ernestine ;)

I’d say, in general it is the safest bet to put on-curve points at all curve extremes. Some font checking tools insist on this and give you error messages otherwise (like FontLab’s FontAudit, FontQA, or MS FontValidator). But you can get away with fewer, and should try too, because otherwise the curve fidelity may be compromised in some cases, depending on what formats the fonts will be produced in, and the kind of hinting that will be applied. You already see that it’s a complicated issue.

I tried to find an example glyph to illustrate all extremum issues, it’s really hard to show everything in one glyph, but I’ll try ...

The general order of importance (from most important extremum points to least) would be:

  1. Points that are relevant for hinting (PostScript as well as TrueType if the fonts will be produced as such)
  2. Points at global extrema (for calculation of glyph and font bounding boxes)
  3. Points at local extrema

In this example, I drew the glyph AE like this and removed overlaps:

At extremum 1 there should be an on-curve point because it influences the glyph bounding box and would be needed for hinting.

Extremum 2 and 5 would define a stem hint in both PS and TT hinting and should be marked with an on-curve point.

Extremum 3 and 7 are local extrema, not influencing the bounding box or needed for hinting, I would leave them as it is (but the curve is long enough so it would be possible to put in a point and preserve the curve shape).

Extremum 4 and 6 would be tricky to insert an additional point, I’d leave it as it is.

In extremum 8 I would probably try to adjust the existing point so it would become the extremum point.

Extremum 9 is a glyph-global extremum and makes the bounding box bigger than necessary, I’d add a point here.

10 is important for hinting, insert a point.

11 influences the bounding box, insert a point if at all possible (if there’s a point at 10, then the handle at 11 will get smaller, and it would probably be acceptable to leave out the extremum point. This would be like the point in Sindre’s example).

Extrema like 1, which make the bounding box bigger on the top or bottom of a glyph, have to be considered extra carefully, because they may occur on the tallest glyph in the font and thus influence the line height calculation (which you usually want to keep as small as possible).

Sometimes it’s possible to move the points and handles surrounding the extrema and keep the curves looking OK, but if the PostScript curves are just on the border of being distorted, in very tight places, they may blow up when converted to TrueType. Then you could either correct the TT curves manually, or increase the UPM of the font before converting to TT. Of course, if you’re not going to produce fonts with TrueType outlines, you don’t have to worry about this.

Jens Kutilek's picture

Here’s another example in which the needed points depend on what kind of hinting you are planning to apply.

Points 1 and 2 would not be needed for global extrema, and are hard to put in because the curve is so narrow (there is only 1 unit (at 1000 upm) in x-direction between the tangent point and the extremum point at (2) and 2 units in x-direction at (1) so the curves are a bit flat if you look closely enough. They will certainly be flat when converted to TrueType.

If you do only y-direction TT-hinting, and your PS hinting style is such that you don’t hint vertical rounds in an Italic (as I often do), you could omit the extremum points. But if you want to put PS hints there, or do x-direction TT hinting, the points would be needed.

We ended up increasing the upm size to 2000 and remodeling the curves at the extremum points in this case.

Sindre's picture

Thank you, everyone! These responses are beyond any expectation I had, how wonderful to see that Typophile still works as an educational tool.

The example in that T1 specification is just the kind of situation I'm talking about. Thank you for finding that, Frank.

And Jens, thank you so much for explaining this in such detail. By trial and error, I have found out some of this myself, but it is invaluable having it all thoroughly explained by a professional. May other novices benefit from this brilliant walkthrough.

I've struggled a lot with similar situations as that in the Ernestine example, but the trouble was maybe even worse in that, because of the slight slant angle.

eliason's picture

Can the same fudginess be employed for when an s-curve changes inflection? On very shallow serpentine curves I'd like to leave out the node at the changeover, but are there technical reasons why that is inadvisable?

Sindre's picture

I haven't a good answer to that, but I do leave them out when such a curve is impossible to keep uncompromised with an inflection point inserted. Maybe it has to do with my current drawing style (I use few straight lines), but I find that it happens a lot. Seems like FontAudit ignores such cases too.

eliason's picture

Or, to spin the question another way, relevant to the extrema issue:
Better to forgo the inflection and keep the extrema (top), forgo the extrema and keep the inflection (middle), or have nodes at both even if it compromises the curve (bottom)?

hrant's picture

I'll get to the other wonderful stuff (thanks Jens!) later, but for now:

Craig, to me explicit inflection points are very important, and often actually more important than extrema; when they're missing conversion to TT is a crapshoot.

So of your three options, I would choose #3 if I can make the curve look nice, and #2 if it's impossible to get a good shape with all those points (without increasing the EM).

Another technical thing here is the avoidance of what I call "half-dead" curves: curves where only one point has a handle - this is also a TT-conversion minefield. Which is a shame since I find them very elegant to work with. Luckily in FL Alt-Shift-Click* adds the missing handle and balances the other one (although usually a subsequent tweak is required).

* However Alt-Shift is also the default way to switch keyboards/languages in Windows, so I find myself having to hit Alt-Shift after every Alt-Shift-Click! :-/

hhp

Syndicate content Syndicate content