Initial & Terminal Forms

Hello! Thanks in advance.

I adapted the classes & features in an existing font to follow this tutorial:

The isolated & final (terminal) forms worked fine but the initials would not come up for me.

Sooo…I built an empty font with only the “n” glyphs just like the tutorial and copied all of the class & feature names exactly. I still got the same result, the isolated & terminal forms are working but the initials are not.

I’ve tried adding all 3 lookups under the “calt” feature & I’ve tried adding each under individual features like “init, isol, fina” & I’ve tried using only an init & calt feature as suggested in the tutorial. Nothing seems to get the init glyphs working. I’ve poured through it repeatedly looking for type-os. May have gone code blind. Any clue would be great.

The init substitution will work on its own. It behaves as if something is wrong in the “ignore sub” line. The code compiles without error.

Here is the code (Identical to the tutorial code):

Probably a problem with the class then. There is a script in my repository that will build the classes and feature code for you.

Thank you. The scripts sound handy. I’ve downloaded them & I’ll probably use those in the future especially for fonts with pre-existing sets of glyphs but I wanted to go through the process manually for more thorough understanding.

You were correct that the problem was actually in the building of the classes. it was a simple oversight. The “AllLetters” class was missing the forms from the 3 alternates sets: isolated, initial, & final. It included only the default, medial forms so it would fail when the default glyph was substituted by an initial glyph.

With that said I might suggest a slight edit to the tutorial to make it clear that the “AllLetters” (or equivalent) class must contain not only all of the default glyphs but also all of the alternate glyphs. I was a bit thrown off by the line about all of the classes having the exact same number of glyphs in the exact same order. The “AllLetters” class is an exception to that.

Thank you for the input, I updated the tutorial.

That’s very cool of you. It might be a little easier for people who want to create the classes manually to follow with the added language. I can see now how it made perfect sense if you follow the suggested procedure to create the classes. I was just confused.

There is a small type-o in the edit :slight_smile: