
🔤 Fira Code — моноширинный шрифт с лигатурами для программирования

Что такое лигатуры и зачем они в коде
Лигатура: объединение двух или трёх символов в один визуальный глиф. В типографике этот приём известен столетиями: буквы «f» и «i» сливаются в fi, чтобы не цепляться друг за друга. В программировании та же механика работает с операторами.
Когда вы пишете != а следом => и >= или ===, ваш глаз считывает их как единый логический токен. Но на экране это два или три отдельных символа, а мозг тратит микроусилия на склейку. За рабочий день таких микроопераций набираются тысячи. Лигатуры решают проблему: != превращается в перечёркнутый знак равенства (≠), => становится жирной стрелкой, >= выглядит как цельный значок «больше или равно».
Разработчик Никита Прокопов (tonsky) построил на этой идее целый шрифт. Fira Code, свободное моноширинное семейство на базе Fira Mono, расширенное программными лигатурами. Под капотом чистый ASCII: исходный код не меняется, рендеринг происходит на уровне шрифта. Файл остаётся тем же, читается иначе.
💡 Быстрый обзор:
- Скачайте Fira Code с GitHub-релиза: ZIP ~2.5 МБ, версия 6.2, бесплатно
- Установите шрифт в систему и пропишите в редакторе
editor.fontFamilyиeditor.fontLigatures - Подберите stylistic sets и character variants под свой вкус: от
ss01доcv31 - Сверьте поддержку вашего редактора по официальной таблице совместимости на GitHub
Как Fira Code меняет чтение кода
Первое, что бросается в глаза после установки: операторы сравнения. Там, где раньше было != (восклицательный знак + равно), теперь единый перечёркнутый символ. <= и >= выглядят как математические знаки из учебника, а не как два разрозненных ASCII-символа.
Стрелки: отдельная магия. Любая цепочка из дефисов и угловых скобок собирается в непрерывную линию. Попробуйте -->, <-- и <-->, они сливаются в сплошную стрелку. В Fira Code 4 разработчик заменил 44 отдельных лигатуры стрелок на четыре комбинаторных правила. Теперь стрелки могут быть произвольной длины. Работает даже ---> и <---.
Многосимвольные операторы тоже собираются в единые глифы: === и !==, :: и //, |||. Комментарии <!-- --> выглядят аккуратнее. Для любителей функционального программирования есть |> и >>= с =<<, и десятки других.
Ниже один и тот же PHP-код без Fira Code и с ним. Разница не кричащая, но попробуйте «найти отличия»: глаз цепляется за операторы быстрее.
Без Fira Code
1 /** 2 * Стрелки --> и -->> иллюстрируют поток данных. 3 */ 4 $out = array(''); 5 $pieces = array( 6 '<!-- HTML -->', 'https://www.example.com/#!', 'red', '##', 0x0, '' 7 ); 8 for ($i = 0; $i <= 5; $i++) { 9 if ($i == '2' || $pieces[$i] === 'red') { 10 $hex__red = 0xca0000; 11 $out[] = $hex__red >> 15; // 404 12 } elseif ($i !== 3 && $pieces[$i] != false) { 13 $out[] = $pieces[$i]; 14 } 15 } 16 echo implode('', $out);
С Fira Code
1 /** 2 * Стрелки --> и -->> иллюстрируют поток данных. 3 */ 4 $out = array(''); 5 $pieces = array( 6 '<!-- HTML -->', 'https://www.example.com/#!', 'red', '##', 0x0, '' 7 ); 8 for ($i = 0; $i <= 5; $i++) { 9 if ($i == '2' || $pieces[$i] === 'red') { 10 $hex__red = 0xca0000; 11 $out[] = $hex__red >> 15; // 404 12 } elseif ($i !== 3 && $pieces[$i] != false) { 13 $out[] = $pieces[$i]; 14 } 15 } 16 echo implode('', $out);
Оба блока идентичны посимвольно. Отличается только шрифт. Во втором случае <= и >= стали цельными знаками, != и !== выглядят перечёркнутыми, а --> превратился в стрелку. Чтение ускоряется не радикально, но ощутимо. Особенно в долгих сессиях код-ревью.
Где работает Fira Code
Шрифт поддерживают десятки редакторов: от VS Code и Sublime Text до Vim и Emacs. Полный список есть в таблице совместимости на GitHub.
Ключевые площадки:
VS Code: нативная поддержка. В
settings.jsonпропишите"editor.fontFamily": "'Fira Code'", "editor.fontLigatures": true. Стилистические наборы включаются через"editor.fontLigatures": "'calt', 'ss02', 'ss09'".JetBrains IDE (IntelliJ, PhpStorm, WebStorm, Rider): с версии 2016.2. Подключение: Editor → Font → выбрать Fira Code → включить Enable ligatures.
Sublime Text: начиная с билда 3146. В пользовательских настройках:
"font_face": "Fira Code".Vim/Neovim: через
set guiligaturesв GUI-версиях и патчи для терминальных.Терминалы: Windows Terminal, iTerm 2, Kitty, Konsole, Tabby, Hyper, WezTerm. Не работают: Alacritty, GNOME Terminal, xterm, PuTTY.
Браузеры: через jsdelivr CDN. Подключите
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/distr/fira_code.css">и добавьтеfont-feature-settings: "calt";для IE/старого Edge.
На практике установка выглядит так: скачали ZIP с релиза, установили TTF в систему, прописали шрифт в редакторе, включили лигатуры. Всё. Никаких плагинов, никакой магии, чистый @font-face на уровне ОС.
Тонкая настройка: варианты и стилистические наборы
Главное преимущество Fira Code перед конкурентами: гибкость. Не нравится конкретная лигатура? Отключите её. Хотите другой рисунок буквы? Выберите character variant. Всё настраивается точечно.
Character variants (cv01-cv31) меняют форму отдельных символов:
cv01-cv10: альтернативные рисунки для буквaиg, а такжеiиlcv11-cv13: варианты нуля (с точкой, без, перечёркнутый)cv14: альтернативная тройкаcv15: звёздочка, прижатая к верху (удобно для C/C++ указателей)cv31: альтернативные скобки()
Stylistic sets (ss01-ss10) управляют лигатурами:
ss01: альтернативный рендеринг&&ss02:<=без наклона, с горизонтальной чертойss03:&в стиле старой пишущей машинкиss04: доллар$без перечёркиванияss05:@без закрученного хвостаss09: возвращает раздельные>>=/<<=/||=(в v6 убраны из дефолта, подробнее на GitHub)
Отдельного упоминания заслуживают прогресс-бары. Fira Code: первый программный шрифт, в котором символы U+EE00-U+EE0B рендерятся как полоска прогресса. Терминал выводит последовательность , а пользователь видит красивую заливку. Для обнаружения поддержки предложена переменная окружения UNICODE_PROGRESS_BAR=true.
Альтернативы: с чем сравнить
Fira Code не единственный шрифт с лигатурами. Рынок за последние годы разросся, и у каждого варианта свой акцент:
Шрифт | Лицензия | Особенность |
|---|---|---|
JetBrains Mono | SIL OFL | Повышенная читаемость, разная высота строчных, нет скруглений |
Cascadia Code | SIL OFL | Шрифт Microsoft для Terminal, поддержка Powerline, box drawing |
Iosevka | SIL OFL | Узкий шрифт, генерируется кодом, максимально компактный |
Victor Mono | MIT | Настоящий курсив с засечками, не наклонный |
Hasklig | SIL OFL | Ответвление Source Code Pro с лигатурами для Haskell |
Monoid | MIT | Поддержка Powerline, настраиваемая ширина |
Fira Code выигрывает не красотой отдельных букв (тут вкусовщина), а объёмом и зрелостью. 81 000 звёзд на GitHub, шесть мажорных релизов, сотни поддерживаемых редакторов, 31 character variant, прогресс-бары, математические символы, поддержка box drawing и Powerline. Когда выбираешь шрифт на годы, экосистема решает не меньше, чем эстетика.
⁉️🤔 Частые вопросы
Я поставил Fira Code, но лигатуры не появились. В чём дело?
Скорее всего, редактор требует отдельного включения. В VS Code это
"editor.fontLigatures": true. В JetBrains IDE: галочка «Enable ligatures» в настройках шрифта. В терминалах проверьте, поддерживает ли ваш эмулятор лигатуры: Windows Terminal поддерживает, ConEmu, нет.
Лигатуры отвлекают. Можно оставить только некоторые?
Да. Стилистические наборы
ss01-ss10включают и выключают группы лигатур. Например,ss09возвращает раздельные>>=и<<=. Для точечной настройки можно пересобрать шрифт локально командой./script/build.sh --features "ss02,ss08,cv14".
Fira Code тормозит в редакторе. Это нормально?
На версии 4 была оптимизация рендеринга: 44 отдельных лигатуры стрелок заменили четырьмя комбинаторными правилами, производительность выросла на 100-150%. Если тормозит сейчас, проверьте, не включены ли параллельно другие шрифтовые фичи (calt плюс ss-наборы обычно не дают задержек).
Какая кириллица в Fira Code?
Кириллический набор унаследован от Fira Mono: читаемый, нейтральный, без претензий. Для кода на русском (комментарии, строки) хватает. Но если вы пишете документацию на русском объёмно, присмотритесь к JetBrains Mono: его кириллица проработана лучше.
Стоит ли переходить на Fira Code в 2026 году
Шрифт не обновлялся с декабря 2021-го. И это, как ни странно, хороший знак. Когда продукт доведён до состояния «работает и не ломается», частые коммиты не нужны. За пять лет без релизов никто не написал «Fira Code умер». Им просто пользуются.
Если вы проводите за кодом 4+ часов в день, установите Fira Code на неделю. Откат на старый шрифт почувствуете быстрее, чем ожидаете: глаз привыкает считывать операторы как цельные токены, и возврат к «разобранным» символам ощущается как шаг назад. Худшее, что случится: удалите шрифт через семь дней. Лучшее: найдёте свой инструмент на годы вперёд.



