Skip to content

Всё для WordPress, веб-разработки — и не только

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

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

Пример кода с лигатурами 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', '&#35;&#35;', 0x0, ''
7);
8for ($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}
16echo implode('', $out);

С Fira Code

1/**
2 * Стрелки --> и -->> иллюстрируют поток данных.
3 */
4$out = array('');
5$pieces = array(
6 '<!-- HTML -->', 'https://www.example.com/#!', 'red', '&#35;&#35;', 0x0, ''
7);
8for ($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}
16echo 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 и l
  • cv11-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 на неделю. Откат на старый шрифт почувствуете быстрее, чем ожидаете: глаз привыкает считывать операторы как цельные токены, и возврат к «разобранным» символам ощущается как шаг назад. Худшее, что случится: удалите шрифт через семь дней. Лучшее: найдёте свой инструмент на годы вперёд.