Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🔤 Fira Code: um tipo de letra monoespaçado com ligaduras para programar

🔤 Fira Code: um tipo de letra monoespaçado com ligaduras para programar

Exemplo de código com ligaduras Fira Code num editor

O que são ligaduras e porque são importantes no código

Uma ligadura é a combinação de dois ou três caracteres num único glifo visual. Em tipografia, esta técnica é conhecida há séculos: as letras «f» e «i» fundem-se em fi para evitar colidirem uma com a outra. Em programação, o mesmo mecanismo funciona com operadores.

Quando escreve != seguido de => e >= ou ===, o seu olho lê-os como um único token lógico. Mas no ecrã, são dois ou três caracteres separados, e o seu cérebro despende microesforços para os combinar. Ao longo de um dia de trabalho, estas micro-operações somam milhares. As ligaduras resolvem o problema: != transforma-se num sinal de igual riscado (≠), => torna-se uma seta a negrito e >= parece um símbolo unificado de «maior ou igual».

O programador Nikita Prokopov (tonsky) construiu um tipo de letra inteiro em torno desta ideia. Fira Code é uma família monoespaçada gratuita baseada em Fira Mono, expandida com ligaduras de programação. Internamente, é ASCII puro: o código-fonte não muda, a renderização acontece ao nível do tipo de letra. O ficheiro permanece o mesmo, mas lê-se de forma diferente.

💡 Visão geral rápida:

  • Descarregue o Fira Code a partir do lançamento no GitHub: ZIP ~2,5 MB, versão 6.2, gratuito
  • Instale o tipo de letra no seu sistema e defina editor.fontFamily e editor.fontLigatures no seu editor
  • Escolha conjuntos estilísticos e variantes de caracteres de acordo com o seu gosto: de ss01 a cv31
  • Verifique o suporte do seu editor na tabela de compatibilidade oficial no GitHub

Como o Fira Code muda a leitura de código

A primeira coisa que salta à vista após a instalação: operadores de comparação. Onde antes estava != (ponto de exclamação + igual), agora está um símbolo riscado unificado. <= e >= parecem sinais matemáticos de um livro escolar, não dois caracteres ASCII separados.

As setas são um tipo de magia à parte. Qualquer cadeia de hífenes e parênteses angulares monta-se numa linha contínua. Experimente -->, <-- e <-->: fundem-se numa seta sólida. No Fira Code 4, o programador substituiu 44 ligaduras de seta individuais por quatro regras combinatórias. Agora as setas podem ter qualquer comprimento. Até ---> e <--- funcionam.

Operadores com vários caracteres também se montam em glifos unificados: === e !==, :: e //, |||. Comentários como <!-- --> parecem mais limpos. Para os entusiastas da programação funcional, existem |> e >>= com =<<, e dezenas mais.

Abaixo está o mesmo código PHP sem Fira Code e com ele. A diferença não é dramática, mas tente «descobrir as diferenças»: o seu olho capta os operadores mais rapidamente.

Sem Fira Code

1/**
2 * Arrows --> and -->> illustrate data flow.
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);

Com Fira Code

1/**
2 * Arrows --> and -->> illustrate data flow.
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);

Ambos os blocos são idênticos carácter por carácter. Apenas o tipo de letra difere. No segundo caso, <= e >= tornaram-se sinais unificados, != e !== parecem riscados e --> transformou-se numa seta. A leitura acelera, não radicalmente, mas de forma notória. Especialmente durante longas sessões de revisão de código.

Onde o Fira Code funciona

O tipo de letra é suportado por dezenas de editores: do VS Code e Sublime Text ao Vim e Emacs. A lista completa está disponível na tabela de compatibilidade no GitHub.

Plataformas principais:

  • VS Code: suporte nativo. Em settings.json, adicione "editor.fontFamily": "'Fira Code'", "editor.fontLigatures": true. Os conjuntos estilísticos são ativados através de "editor.fontLigatures": "'calt', 'ss02', 'ss09'".

  • IDE JetBrains (IntelliJ, PhpStorm, WebStorm, Rider): desde a versão 2016.2. Configuração: Editor → Tipo de Letra → selecionar Fira Code → ativar Ativar ligaduras.

  • Sublime Text: a partir da build 3146. Nas definições de utilizador: "font_face": "Fira Code".

  • Vim/Neovim: via set guiligatures nas versões GUI e patches para versões de terminal.

  • Terminais: Windows Terminal, iTerm 2, Kitty, Konsole, Tabby, Hyper, WezTerm. Não suportado: Alacritty, GNOME Terminal, xterm, PuTTY.

  • Navegadores: via CDN jsdelivr. Inclua <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/distr/fira_code.css"> e adicione font-feature-settings: "calt"; para IE/Edge legado.

Na prática, a instalação é assim: descarregue o ZIP do lançamento, instale o TTF no seu sistema, defina o tipo de letra no seu editor, ative as ligaduras. É tudo. Sem plugins, sem magia, apenas @font-face puro ao nível do SO.

Afinação: variantes e conjuntos estilísticos

A principal vantagem do Fira Code sobre os concorrentes é a flexibilidade. Não gosta de uma ligadura específica? Desative-a. Quer uma forma de letra diferente? Escolha uma variante de carácter. Tudo é personalizável a um nível granular.

Variantes de caracteres (cv01-cv31) alteram a forma de caracteres individuais:

  • cv01-cv10: desenhos alternativos para as letras a e g, bem como i e l
  • cv11-cv13: variantes de zero (com ponto, sem, barrado)
  • cv14: três alternativo
  • cv15: asterisco alinhado ao topo (conveniente para ponteiros em C/C++)
  • cv31: parênteses alternativos ()

Conjuntos estilísticos (ss01-ss10) controlam as ligaduras:

  • ss01: renderização alternativa de &&
  • ss02: <= sem inclinação, com barra horizontal
  • ss03: & em estilo de máquina de escrever
  • ss04: dólar $ sem barra
  • ss05: @ sem cauda curva
  • ss09: restaura >>= / <<= / ||= separados (removidos do padrão na v6, detalhes no GitHub)

Barras de progresso merecem uma menção especial. O Fira Code é o primeiro tipo de letra de programação onde os caracteres U+EE00-U+EE0B são renderizados como uma faixa de barra de progresso. O terminal emite uma sequência ``, e o utilizador vê um preenchimento agradável. Para detetar o suporte, foi proposta uma variável de ambiente UNICODE_PROGRESS_BAR=true.

Alternativas: com o que comparar

O Fira Code não é o único tipo de letra com ligaduras. O mercado expandiu-se nos últimos anos e cada opção tem o seu próprio foco:

Tipo de Letra

Licença

Característica

JetBrains Mono

SIL OFL

Legibilidade melhorada, altura variada de minúsculas, sem arredondamento

Cascadia Code

SIL OFL

Tipo de letra da Microsoft para Terminal, suporte Powerline, desenho de caixa

Iosevka

SIL OFL

Tipo de letra estreito, gerado por código, maximamente compacto

Victor Mono

MIT

Itálicos verdadeiros com serifas, não apenas inclinados

Hasklig

SIL OFL

Fork do Source Code Pro com ligaduras para Haskell

Monoid

MIT

Suporte Powerline, largura personalizável

O Fira Code vence não pela beleza das letras individuais (isso é subjetivo), mas pela sua abrangência e maturidade. 81.000 estrelas no GitHub, seis lançamentos principais, centenas de editores suportados, 31 variantes de caracteres, barras de progresso, símbolos matemáticos, desenho de caixa e suporte Powerline. Ao escolher um tipo de letra para os próximos anos, o ecossistema importa tanto quanto a estética.

⁉️🤔 Perguntas frequentes

Instalei o Fira Code, mas as ligaduras não apareceram. O que está errado?

Muito provavelmente, o seu editor requer ativação separada. No VS Code, é "editor.fontLigatures": true. No IDE JetBrains: verifique «Ativar ligaduras» nas definições de tipo de letra. Em terminais, verifique se o seu emulador suporta ligaduras: o Windows Terminal suporta, o ConEmu não.

As ligaduras distraem. Posso manter apenas algumas?

Sim. Os conjuntos estilísticos ss01-ss10 ativam e desativam grupos de ligaduras. Por exemplo, ss09 restaura >>= e <<= separados. Para personalização granular, pode reconstruir o tipo de letra localmente com ./script/build.sh --features "ss02,ss08,cv14".

O Fira Code está lento no meu editor. Isto é normal?

A versão 4 incluiu uma otimização de renderização: 44 ligaduras de seta separadas foram substituídas por quatro regras combinatórias, melhorando o desempenho em 100-150%. Se está lento agora, verifique se outras funcionalidades do tipo de letra estão ativadas simultaneamente (calt mais conjuntos ss geralmente não causam atrasos).

Como está o suporte a Cirílico no Fira Code?

O conjunto Cirílico é herdado do Fira Mono: legível, neutro, despretensioso. É suficiente para código em russo (comentários, strings). Mas se escreve documentação extensa em russo, considere o JetBrains Mono: o seu Cirílico está mais desenvolvido.

Vale a pena mudar para o Fira Code em 2026

O tipo de letra não é atualizado desde dezembro de 2021. E isto é, estranhamente, um bom sinal. Quando um produto atinge o estado de «funciona e não avaria», commits frequentes não são necessários. Em cinco anos sem lançamentos, ninguém escreveu «Fira Code está morto». As pessoas simplesmente usam-no.

Se passa mais de 4 horas por dia a programar, instale o Fira Code durante uma semana. Vai sentir o retrocesso para o seu tipo de letra antigo mais rápido do que espera: o seu olho habitua-se a ler operadores como tokens unificados, e voltar aos caracteres «desmontados» parece um passo atrás. O pior que pode acontecer: apaga o tipo de letra após sete dias. O melhor: encontra a sua ferramenta para os próximos anos.