11

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.

5
  • Well atleast in Finnish you have words that have double vovels next to each other like for example pää (head) or käyttöön (to be used / for consumption) In fact these are pretty common when you use declinations (which is how the language works it is a aglutatinative language)
    – joojaa
    Aug 17, 2016 at 14:07
  • Good question. I have never thought about it. Shame on me. U_U
    – Rafael
    Aug 17, 2016 at 16:31
  • These are all x height characters. What about collisions with the tops of f, t, d and b? Something similar: when adjusting a phonetics characters font, I saw the combination f and lots of accented characters clashed (the 'common' ligature fi is a well-known case). I created an alternate f with a shorter flag and solved it with OpenType rules, so it only appeared when necessary.
    – Jongware
    Aug 17, 2016 at 20:35
  • @RadLexus of course, my example was just to show accents colliding with each other, I'm not exclusively interested in those cases. "fi" is a common ligature, yes, but what about "fï", "fî", "fī", "fì"?
    – Cai
    Aug 17, 2016 at 20:46
  • 1
    (interestingly, those examples all collide in my comment)
    – Cai
    Aug 17, 2016 at 20:46

2 Answers 2

7

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 every orthography in existence adequately without changing your regular metrics and 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.
2
  • I can get most glyphs in to existing kerning classes (or new common classes) with no problem but there are definitely cases that need specific treatment—Especially in the typeface I'm working on now, which is quite narrow/condensed so has a fair amount of overhanging diacritics
    – Cai
    Aug 19, 2016 at 20:15
  • Also had a look at the kerning in UniFraktur... Impressive. Extensive to say the least.
    – Cai
    Aug 19, 2016 at 20:16
0

You should care a bit. My experience is that, in latin script, adjacent glyphs with diacritics are normally fine, unless you have particularly narrow bodies or the letters i and j.

Some fonts and font-designers draw narrow diacritics for i and j. Glyphs has a tutorial about narrow marks.

Kerning with f, ľ, capitals and so on can be problematic, but Wrzlprmft's answer covers those options.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.