Should I care about diacritic collisions?

When designing a typeface, how should I treat diacritics that would collide with adjacent glyphs—including other diacritics?

You can see in this example that there are a lot of collisions:

Colliding Diacritics

That is an extreme example that is never going to happen in normal text and I assume accent collisions are the exception rather than the norm, but since I don’t speak and am not familiar with most languages that make use of diacritics I’m not sure.

I can see a few options to dealing with these collisions:

  1. Adjust glyph metrics to accommodate diacritical marks. This would solve the problem of collisions but unnecessarily affect the metrics even in (most) cases where it isn’t needed.

  2. Manually kern the problem character pairs. Manually kerning all possible collisions is going to be a long process for what—in most cases—are going to be edge cases at best.

  3. Create ligatures for commonly occurring collisions. This sounds like a good idea for the most common occurrences, but I have no idea which pairs even occur in normal text at all, never mind commonly.

  4. Forget about it… If these collisions aren’t common in normal text, maybe it’s a waste of time trying to accommodate for them.

Should I care about these collisions? If so, how should I deal with them?

Is there a list of commonly occurring collision pairs I can refer to? This would help me kern only pairs that are actually going to occur.

Answer

Yes, you should care. There are some languages in which two diacritical characters can be located next to each other or diacritical characters follow f. For example, Aspell considers měšťáčtější and nejjidášštější valid Czech words¹, and pfählen, fühlen, and föhnen are German words.

There are two other variants that are normally employed:

  1. Use special kerning classes or even tables – you do not need to kern all of these pairs manually, instead you group all your characters intelligently. For example for diacritics placed above the letter, you can look at the following groups:

    1. glyphs without ascenders, e.g., a, c, e, g;

    2. glyphs with non-overhanging ascenders or diacritics, e.g., b, d, i, ä, ñ.

    3. glyphs with overhanging ascenders or diacritcs, e.g., f, ľ, ï.

    Now, you only have to consider the following groups of cases, for which you can use different kerning tables:

    • 1–1, 1–2, 2–1, and 2–2 – You can apply your standard kerning here: the metrics for co, cö, ćo, and ćö are identical (assuming that the diacritical marks are not overhanging for your specific typeface).

    • 3–1 and 1–3 are pretty straightforward as well: ïo should have the same metrics as io.

    • Only 3–2, 2–3, and 3–3 need some attention, but you can usually put different glyphs in the same kerning class. For example, î may kern like ǐ, and ľ may kern analogously to f. Moreover, as the diacritics or ascenders dominate the kerning, you can now group glyphs together that needed different kerning otherwise. For example, if o and õ were in a different kerning class than n and ñ for kernings in 1–1, 1–2, and 2–1, they may be in the same class now, e.g., because kerns the same as fñ.

    This way you can cover all cases adequately without affecting your regular metrics, considering every orthography in existence, and needing to use overly fine-grained kerning classes. To see this in action, you can take at the kerning table of Unifraktur Maguntia (on which I worked).

  2. Use contextual forms – This is an alternative to ligatures, if the kerning would result in an undesirably large gap. For example, Linux Libertine has an alternative narrow f that is used, if a letter with a diacritical mark is following (note that the kerning is still slightly different):

    Alternative f in Linux Libertine



¹ I have no idea what those words mean, so I hope for comedy’s sake that these are blatant obscenities.

Attribution
Source : Link , Question Author : Cai , Answer Author : Wrzlprmft

Leave a Comment