Cyrillic Script

Cyrillic shares almost all of Latin's shaping simplicity: left to right, no reordering, no positional joining. Where it genuinely diverges is in italics. A Latin italic is a slanted variation of the same letter skeletons; a Cyrillic italic redraws a meaningful share of its lowercase letters into different shapes entirely. This article covers the alphabet, that redrawing, and the regional letters a font needs for Slavic languages beyond Russian.

Fast facts

Cyrillic, in one screen

An alphabet with Latin's shaping simplicity and a genuinely distinct italic design tradition.

ISO 15924
Cyrl, spread across 8 Unicode blocks, roughly 508 characters
Languages
Primary script for Russian and Ukrainian; also Bulgarian, Serbian, Macedonian, and others
Direction
Left to right, no reordering, no positional joining
Signature complexity
Not shaping, italic design: several lowercase letters are redrawn, not slanted, in italic style
1.Letters

The standard Russian alphabet is 33 letters, uppercase and lowercase. Unicode encodes the core set in the Cyrillic block, then adds extra letters for other Slavic and non-Slavic languages that use Cyrillic in Cyrillic Supplement and Cyrillic Extended-A through Extended-D. A font built only for Russian will fall short of Ukrainian, Serbian, or Bulgarian without those extensions.

Russian alphabet (33)
АаA
БбB
ВвV
ГгG
ДдD
ЕеE
ЁёYo
ЖжZh
ЗзZ
ИиI
ЙйY
КкK
ЛлL
МмM
НнN
ОоO
ПпP
РрR
СсS
ТтT
УуU
ФфF
ХхKh
ЦцTs
ЧчCh
ШшSh
ЩщShch
ъhard sign
ЫыY
ьsoft sign
ЭэE
ЮюYu
ЯяYa
Regional letters (Ukrainian, Serbian, Macedonian)
ҐґUK ge
ІіUK i
ЇїUK yi
ЄєUK ye
ЂђSR dje
ЉљSR lje
ЊњSR nje
ЋћSR tshe
ЏџSR dzhe
ЃѓMK gje
ЌќMK kje
Not shown
Historical letters such as omega (Ѡ) and yat (Ѣ), still used in Church Slavonic and some pre-reform text; combining marks for stress and pronunciation guides; and letters used only for minority and historical languages written in Cyrillic beyond the Slavic family.
2.What makes Cyrillic distinctive: italic is a second alphabet

In Latin type, italic is fundamentally the same letter, tilted and often narrowed. A Latin lowercase "n" and its italic counterpart share a skeleton. Cyrillic doesn't work that way for a meaningful share of its lowercase letters: several of them are redrawn into shapes borrowed from cursive handwriting, not slanted versions of the upright design.

Rendered side by side, the difference is immediate. Roman п, т, and д keep their upright forms (a bridge shape, a bar over three strokes, and a form with a descending loop). In italic, п collapses toward a shape that reads like a Latin "n", т collapses toward a shape that reads like a Latin "m", and д takes on a cursive form with a tail that has no equivalent in the roman design. A font that generates its Cyrillic italic by algorithmically slanting the roman glyphs, rather than drawing a second, historically grounded italic, will look wrong to any reader fluent in the script.

3.Visual anatomy: roman against italic

The clearest way to see the redrawing is to set the same word twice, once upright and once in italic, and compare letter by letter.

Cyrillic roman versus italic comparison The word Роман set in upright Cyrillic type above the word Курсив set in italic Cyrillic type, illustrating how letters such as п, т, and д change shape rather than simply slant. Visual anatomy Роман vs. курсив Upright (roman) Роман: пшт бгд Italic Курсив: пшт бгд

Compare п, т, and д across the two lines. Their italic forms aren't the upright letters leaned over, they're different shapes that happen to occupy the same code points.

4.Letters that change shape in italic
п → п
Pe
Upright bridge shape → cursive form reading like Latin n
т → т
Te
Upright bar-over-three-strokes → cursive form reading like Latin m
д → д
De
Upright descending-loop form → cursive form with a distinct tail

This isn't a quirk of one typeface. It reflects Cyrillic italic's roots in period handwriting, the same way Latin italic traces back to Renaissance cursive scripts, except Cyrillic's cursive tradition diverged further from its upright forms than Latin's did. A type family that skips drawing genuine italics, and instead slants the roman outlines mechanically, is skipping a real design step, not just a stylistic nicety.

5.Regional letterforms

Beyond the italic question, Cyrillic typography has a second localization layer: some letters are conventionally drawn differently depending on the target language, even though they share the same Unicode code point. A font that supports multiple Cyrillic-using languages well typically ships language-specific alternates and swaps them in with the locl feature, the same mechanism Latin uses for things like Dutch IJ or Turkish dotless ı.

Ґ
Ukrainian ge
Distinct from Ge (Г), not present in standard Russian
Ђ Љ Њ Ћ Џ
Serbian letters
Cover sounds Russian writes with two-letter combinations
Ѡ Ѣ
Historical letters
Omega and yat, retained for Church Slavonic and pre-reform text
6.The shaping model for Cyrillic

Like Latin, Cyrillic needs no reordering and no contextual joining. Its OpenType feature list is short, but genuine italic design and regional localization carry real weight for typefaces meant to serve more than one Cyrillic-using language.

FeatureTagWhat it builds here
Localized formsloclSwaps letterforms by language, including Serbian and Bulgarian regional conventions.
Mark attachmentmarkAnchors stress marks and pronunciation diacritics used in dictionaries and teaching text.
Standard ligaturesligaRare in running Cyrillic text, occasionally used decoratively.
KerningkernPair adjustments, including the wider glyphs Cyrillic tends to use relative to Latin.
Small capitalssmcp / c2scTrue small caps, drawn as their own glyphs rather than scaled capitals.
Case-sensitive formscaseAdjusts punctuation position when set alongside all-capital Cyrillic text.
7.Rendering pitfalls
SymptomLikely causeFix
Italic Cyrillic looks like slanted roman lettersNo dedicated italic design; italic generated by mechanically slanting the roman outlinesDraw genuine italic forms for п, т, д, and other letters with distinct cursive shapes
Ukrainian or Serbian text shows the wrong regional letterformFont ships only Russian conventions and no locl alternatesAdd language-tagged alternates for the specific Cyrillic-using languages targeted
A Cyrillic-using language shows missing glyphs as tofuFont covers only the 33-letter Russian alphabet, not the regional extensionsCheck a target language's full letter list before claiming support for it
Cyrillic text looks visually thinner or narrower than the Latin it's paired withCyrillic glyphs drawn without adjusting for their typically wider proportionsTest Cyrillic and Latin side by side at matched sizes, not just within their own scripts
Practical rule
Never assume a Cyrillic italic can be derived by slanting the roman glyphs. Test п, т, б, г, and д specifically, those are the letters most likely to expose a shortcut.
8.Design and production checklist
  1. 1Define the target languages, Russian alone is a much smaller commitment than full Slavic coverage.
  2. 2Draw a genuine italic, don't slant the roman design and call it done.
  3. 3Add regional alternates through locl for Serbian and Bulgarian if those languages are in scope.
  4. 4Check proportions against the Latin in the same family, Cyrillic often needs to run slightly wider.
  5. 5Test extended letters for Ukrainian, Serbian, and Macedonian, not just the 33-letter Russian set.
  6. 6Review with a fluent reader before shipping, italic redrawing errors are easy to miss otherwise.
9.Test strings

Copy these into a test document. Each targets a different part of the coverage and shaping surface covered above.

Съешь же ещё этих мягких французских булок, да выпей чаюRussian pangram, all 33 letters
Ґанок, їжак, серце, УкраїнаUkrainian regional letters
Ђорђе, љубав, њива, ћуп, џемSerbian regional letters
Роман и курсив: пшт бгдItalic redrawing check
«Цитата» — 1990–2026Guillemets and dash conventions
МОСКВА, САНКТ-ПЕТЕРБУРГAll-capitals setting