I write this article mostly just for myself: for making easier to check fonts, and to report in future. Because I noted some common patterns. Just in case: I'm not a font-maker, I'm still a user.
Cyrillic isn't just Russian
Well, it's very obvious statement. But from my expierence, it isn't so much. For the start, it would be nice to add at least all modern Slavic letters. You can add by a group as a stage.
Eastern group is Belarusian, Bulgarian, Russian and Ukrainian (with Rusyn). Southern one is the rest: Macedonian, Montenegrin and Serbian — basically, those alphabets which are based on an orthography by Vuk. As you may expect, a base is for both Eastern and Southern.
Vowels
Аa Ее Ии Уу Оо # Base
Ээ Іi Ыы Ъъ # Eastern
Яя Єє Її Юю Ёё # └ Ioted
Ьь # Historical
Лл Нн Рр # Southern
Consonants
Бб Вв Гг Дд Жж Зз Кк Лл Мм Нн Пп Рр Сс Тт Фф Хх Цц Чч Шш # Basе
Ґґ Щщ # Eastern
Ѓѓ Ђђ З́з́ Ќќ Љљ Њњ С́с́ Ћћ Ѕѕ Џџ # Southern
Signs and semivowels [they're included in alphabets]
Ьь Ъъ Йй Ўў # Eastern
Јј # Southern
Some letters here, like some Montegerin ones, can be only with combining diacritics.
Still, don't forget to decompose letters for checking their visual. This may happen, mostly during some programming shenanigans. Also have a respect to zero-width non-joiner. It matters to Latin too: when I write something like i + ‌ + ◌́ U+0301, then, please, keep the dot, not replace it as under a normal condition.
About punctuations, it's basically the same as in Latin. I would only note, that some Ukrainians may use a modifie letter apostrophe instead U+02BC instead: an apostrohe U+0027, a signle [mostly right] quatation mark U+0027, and in some rare cases a grave accent U+0060.
Do you love history?
If so, then maybe you want add leters at least from Early Cyrillic, on which, I didn't mentioned before, Eastern group is based.
If you add a letter from one group, then it's better to add a whole group (if it's not from «not common»). And, yeah, if you add a group from «vowels», you add a corresponding group from «consonants» too. So, yeah, by this note adding ѧ but not ѩ is totally okay.
For some reason I was in a situation many times where a font has ѫ but not ѧ which is very strange at least for two reasons: it's a classic pair as ъ and ь, and by linguistics (at least for Eastern) ѧ is more important.
Vowels
Ѣѣ Ꙑꙑ Ѹѹ Ꙋꙋ # Base
Ѵѵ Ѡѡ # Greek base
Ꙇꙇ # └ not common
Ѧѧ Ѫѫ # Nasals
Ꙗꙗ Ѥѥ # Ioted
Ѩѩ Ѭѭ # ├ nasals
Ꙓꙓ # └ not common
Consonants
Ꙉꙉ # Base, not common (at least in Eastern)
Ѯѯ Ѱѱ Ѳѳ # Greek base
Ҁҁ # └ not common
Of course, there're more symbols, but those are usually enough.
Letters aren't alone
Surprise (not), but Cyrillic has diacritics too, as Greek or Latin. For some reason, it's very often omitted in fonts.
You could noted that before I divided symbols into groups: consonants, vowels and signs. Well, it will be helpful here, because we speak here about only vowels.
In Eastern those diacritics can be applied:
- ◌́ an accute
U+0301 - ◌̀ a grave
U+0300
In Southern (and Historical) you include the previous part from Eastern, and those:
- ◌̏ a double grave
U+030F - ◌̄ a macron
U+0304 - ◌̑ an inverten breve
U+0311
Try to keep one type diacritic the same for all letters. Because, as for an example, I saw many times where ◌̈ a diæresis U+0308 for ї and ё were different (by distance between dots, by hight from letter etc). And diacritics usually act as in Latin, for an example, [amost, just in case] any diacritic replace a dot within і. Also, її and ії are a common combination in Ukrainian, so itʼs better to avoid overlaping of dots here.
For reminding, some base vowels and consonants can be decomposed into a letter and:
- ◌̆ a breve
U+0306 - ◌̈ a diæresis
U+0308 - ◌́ an accute
U+0301
I would note another obvious thing. All above is about standards. There're still other orthographies, including historical like by Hatcuk or Maksimovitch, Cyrillic-based transcriptions and so on may have other diacritics. So if your diacritic symbols will cover more letters, or be more independ from letters, then it would be better.
<details><summary>All letters</summary>
Composed — Decomposed — Without diacritic: