Free Fonts With Real Cyrillic Support

· 5 min read

Cyrillic is not an accent on Latin. It is a separate alphabet with its own conventions, and a typeface that treats it as an afterthought produces text that a reader notices immediately without necessarily being able to say why.

What "supports Cyrillic" should mean

At minimum, the 66 letters of the modern Russian alphabet in both cases. Properly, that plus the letters other languages need — Ukrainian ї, і, є and ґ, Serbian ђ and ћ, Bulgarian’s different italic forms, and the extended set for the Central Asian languages. A font can cover Russian completely and still be unusable for Ukrainian.

The second requirement is that the Cyrillic was drawn rather than derived. The letters have different proportions from Latin: more of them are the same width, the lowercase is closer to the capitals in shape, and several letters have no Latin equivalent to borrow from. A face where ж, ф and щ look assembled from Latin parts is the tell.

The italic problem

Cyrillic italics are not slanted romans — several lowercase letters change shape entirely, the way a Latin a becomes a single-storey form in an italic. A font that simply slants its Cyrillic is producing something that reads as wrong to a native reader even at a glance. This is the most common failure in fonts with retrofitted Cyrillic.

How this site answers it

The alphabets listed on every font page here are read out of the font file’s own character map when the archive is built, not copied from a description. There is a Cyrillic page listing every family that carries it, and a separate Cyrillic Extended page for the wider set — the distinction matters, because that is where Ukrainian and the Central Asian languages live.

Inter, Roboto and IBM Plex Sans all carry thorough Cyrillic drawn as part of the design. PT Sans and PT Serif are worth singling out: they were commissioned specifically for the languages of the Russian Federation, so the Cyrillic is the point rather than an extension.

FamilyVariable downloadStatic download
Inter957 KB2 files9.1 MB54 files
Roboto597 KB2 files5.2 MB54 files
IBM Plex Sans637 KB2 files4.8 MB42 files
PT SansNone published883 KB4 files
PT SerifNone published699 KB4 files
Measured from the font files: coverage, weights and size.

Checking a font yourself

Set a sentence rather than the alphabet, and include the letters that are hardest to draw: Съешь ещё этих мягких французских булок is the standard pangram and covers most of them. Then look at ж, ф, щ and ю at the size you will actually use, and if the font has an italic, set the same line in it.

The character map on every font page shows exactly which characters the file contains, so the coverage question can be answered by looking rather than by trusting a label.

One practical note about file size

Cyrillic roughly doubles a font. If your site is in English and you are serving a face that carries it, every visitor is downloading an alphabet they will never see — which is what the Latin-only download on each font page is for. If you are setting Cyrillic, take the complete file. See the subsetting post.

Bulgarian and Serbian want different letters

Cyrillic is not one set of shapes. Several letters are drawn differently depending on the language: Bulgarian upright forms are closer to handwriting than the Russian ones, and Serbian and Macedonian italics draw б, г, д, п and т in forms a Russian reader would find strange. A font can contain every character and still set Bulgarian in Russian shapes.

Fonts that handle this carry localised forms and switch them on when the text declares its language. In HTML that means the lang attribute doing its job: lang="bg" or lang="sr" on the element, not just on the page. Without it the browser has no way to know which of the two correct answers you want.

Setting Cyrillic and Latin in the same paragraph

Mixed text is where a poorly matched Cyrillic shows itself. The two alphabets have to share a lowercase height, a stroke weight and a rhythm, or the Cyrillic words look pasted in from another font — which, in a family that added Cyrillic late, is almost what happened.

The safest choices are families drawn with both from the start. PT Sans and PT Serif were commissioned for Russian and are Latin-and-Cyrillic by design; IBM Plex Sans and Inter both carry Cyrillic drawn to the same skeleton as their Latin.

CategoryFontsCarry CyrillicShare
Sans-serif1184135%
Serif762432%
Display66812%
Monospace401743%
Handwriting37514%
All fonts3379528%
How many families in this archive carry Cyrillic, by category — counted from each font’s own character table.

A test string that finds the gaps

Most incomplete Cyrillic fails on the same handful of letters. Paste this into any specimen on this site and look for a box, a blank, or a letter that suddenly changes weight: Ёё Йй Щщ Ъъ Ыы Ээ Юю Яя Ђђ Ћћ Ѓѓ Ќќ Џџ Іі Її Єє Ґґ.

The first eight are Russian and nearly everything has them. The rest are Serbian, Macedonian and Ukrainian, and that is where a family that claims Cyrillic support usually stops. The character map on every font page here is measured from the file, so it shows exactly which of those the font contains before you download anything.

Punctuation, currency and the things after the alphabet

A font can carry every Cyrillic letter and still be missing the marks that go around them. Russian uses guillemets — « » — as its primary quotation marks, with low-nine quotes inside them, and a font drawn for English often has neither. The rouble sign ₽ is recent enough that plenty of families predate it, and the hryvnia ₴ is rarer still.

Check those four characters at the same time as the letters. A missing quotation mark is more visible than a missing letter, because it appears in the first line of every quotation on the page and comes from whatever fallback the browser picks.

Questions

Which free fonts support Cyrillic?
Many, but the coverage varies and the download page is rarely a reliable guide. This site reads the alphabets out of each font file and lists them on the font page, with separate Cyrillic and Cyrillic Extended pages — the second is where Ukrainian and the Central Asian languages live, and a font can cover Russian fully without covering those.
What is the difference between Cyrillic and Cyrillic Extended?
Cyrillic covers the modern Russian alphabet. Cyrillic Extended adds the letters other languages need — Ukrainian ї, і, є and ґ, Serbian ђ and ћ, and the wider set used across Central Asia. A font listed as covering only the first will show missing characters in Ukrainian text.
Why does my Cyrillic text look wrong in italic?
Because the font is slanting its roman rather than carrying a real Cyrillic italic. Several Cyrillic lowercase letters change shape entirely in italic, the way a Latin single-storey a differs from the roman form. A slanted roman reads as wrong to a native reader immediately.
Does Cyrillic support make a font file bigger?
Yes, roughly double. If your site is in English there is no reason to serve it — every font page here offers a Latin-only download alongside the complete one for exactly this reason. If you are setting Cyrillic, take the complete file.
Do I need a different font for Bulgarian or Serbian?
Not necessarily, but you need one with localised forms, and you have to declare the language so the browser asks for them. Several Cyrillic letters are drawn differently in Bulgarian and in Serbian italics; without a lang attribute the font renders the Russian shapes.

Fonts in this post

  • Inter

    Sans-serif · Rasmus Andersson · Variable

  • Roboto

    Sans-serif · Christian Robertson, ParaType, Font Bureau · Variable

Find the font for your next project.

All 337 families here are free for commercial use, and every download carries its license inside the zip.