The previous post covered alternates, especially contextual alternates. It’s a long one, and packed with info goodies.
This post chronicles my journey into the mark and mkmk features. These features are for piecing together composite glyphs from base glyphs and diacritic marks using anchors. Spoiler: I didn’t get this to work properly, then realized I didn’t need it anyway. But here’s what I learned, in case it’s helpful.
What are mark and mkmk features?
Remember all the anchors I used to generate glyphs with diacritics? There were anchors on the base glyphs and anchors on the diacritics. By placing those anchors, FontLab new where to put the marks in relation to the base glyphs when generating glyphs with diacritics.
The mark feature notes where all those anchors are in relation to the marks and the base glyphs. Software that supports the mark feature can then dynamically combine diacritic marks with the base glyphs. This way, if I need a mark combined with a base glyph, the software can just do it even if I haven’t made that specific glyph.
The mkmk feature is similar to the mark feature, but tells where to attach marks in relation to each other. This way more than one diacritic can be combined with each other and a base glyph. I could theoretically type an A with a tilde, dieresis, macron, breve, and acute.
How to I write this feature?
The prospect of writing hundreds of lines of code detailing the relative position of anchors for all my marks and base glyphs is daunting, to put it mildly. Thankfully, FontLab VI has a handy dandy feature!
In the Features Panel, in the hamburger menu in the upper left corner, is a menu option that says “Create [mark] and [mkmk] features” When I click on this, FontLab writes those features for me, using any glyphs that have anchors in them.
When I run this, I get errors for unused anchors (I may have gone overboard on anchors), but this is totally okay. After the features are created, I make sure to hit the Compile features button (the little Play button triangle).
Unfortunately, the feature didn’t work as well as I’d hoped.
Whaaaaaat is thaaaaat? 😱
So I export the font to try it out, and open up my test document in InDesign CC. Then I thank God it’s easy to delete features, because this is not how Protest is supposed to look.
I ended up submitting a support ticket to FontLab. They’re very personable and responsive, which is wonderful.
When I got my response, Alex Petrov noted there are anchors in the composite glyphs. He says perhaps FontLab VI needs “not to copy anchors when building new glyphs from components.” So there may be a fix for this coming soon.
At Alex’s recommendation I deleted anchors from all my composite glyphs. All 800-something of them. This amounted to selecting all glyphs, then deselecting the ones that weren’t composite builds. Once selected, I went to Tools > Remove Anchors.
After deleting and re-creating them, the mark and mkmk features looked a lot leaner and cleaner, and my font didn’t spaz out. Yay!
I tried to take this out for a spin in InDesign by typing a dieresis with an æ, since Protest doesn’t have that glyph, but it does have the mark and the base glyph with anchors. It didn’t work.
Then I thought I might need to have the combining accents, where I just have the regular accents (so dieresiscomb, U+0308, versus dieresis, U+00A8). I duplicated the dieresis, renamed it and gave it the appropriate unicode slot, and made sure it was non-spacing by giving a width of 0. Then I re-created the mark and mkmk features.
It still didn’t work.
Do I need this feature?
At this point I’m thinking to myself, “I’ve already generated diacritic glyphs for this font. Do I need another way to do the same thing?” The answer, as always, is it depends.
If I want’ to have more language support than I’ve planned for, yes. If I want to cover corner cases, then yes. But when I take a step back at the target audience for this font, when I realize this is a display font that’s already going pretty far beyond many similar fonts, then the answer is no, I don’t.
Don’t get me wrong, I’m going to learn how to make this work. I’ve already learned if I’m going to use the mark and mkmk features, I need to generate them after I’ve placed my anchors, but before I’ve generated combined glyphs. But for right now, I can let it go. I can always add it later if need be.
Now that I’m done with the OpenType features, I’m ready to move on to every type designer’s favorite part of the job. The last thing one does before finishing up: Kerning!