Top Related Projects
This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
JetBrains Mono – the free and open-source typeface for developers
Monospaced font family for user interface and coding environments
Versatile typeface for code, from code.
A free programming font with cursive italics and ligatures. Donations welcome ❤️
A typeface designed for source code
Quick Overview
Fira Code is a free monospaced font with programming ligatures. It's designed to enhance code readability by combining multiple characters into single logical glyphs, making code more visually appealing and easier to scan.
Pros
- Improves code readability with ligatures for common programming symbols
- Supports a wide range of programming languages and IDEs
- Regularly updated with new ligatures and improvements
- Available in multiple weights (Light, Regular, Medium, Bold)
Cons
- May take some time for users to get accustomed to ligatures
- Not all text editors or IDEs support ligatures out of the box
- Some developers prefer traditional monospaced fonts without ligatures
- Ligatures might occasionally cause confusion in certain programming contexts
Getting Started
To use Fira Code in your development environment:
- Download the font from the GitHub releases page.
- Install the font on your system.
- Configure your text editor or IDE to use Fira Code as the default font.
- Enable ligatures in your editor settings (if necessary).
For example, in Visual Studio Code, add the following to your settings.json
:
{
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true
}
For other editors and IDEs, refer to their documentation for specific instructions on enabling custom fonts and ligatures.
Competitor Comparisons
This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
Pros of Cascadia Code
- Designed specifically for Windows Terminal and VS Code, offering optimal readability in these environments
- Includes programming ligatures and a powerline version for enhanced terminal experiences
- Actively maintained by Microsoft with frequent updates and improvements
Cons of Cascadia Code
- Limited language support compared to FiraCode's extensive coverage
- Newer font with less widespread adoption and community contributions
- May not render as well on non-Windows systems or in certain applications
Code Comparison
FiraCode:
<= >= != === !== -> <-
Cascadia Code:
<= >= != === !== -> <-
Both fonts support similar programming ligatures, enhancing code readability. However, FiraCode offers a wider range of ligatures and language-specific symbols.
Key Differences
- FiraCode is more established and widely adopted across various platforms and editors
- Cascadia Code is tailored for Microsoft environments but may lack some features in other contexts
- FiraCode offers broader language support and more extensive ligature options
- Cascadia Code provides a cohesive experience within the Microsoft ecosystem
Choose FiraCode for a versatile, widely-supported programming font with extensive ligatures. Opt for Cascadia Code if you primarily work in Windows environments and want a font optimized for Microsoft tools.
JetBrains Mono – the free and open-source typeface for developers
Pros of JetBrainsMono
- Designed specifically for coding environments, with a focus on readability in IDEs
- Includes a wider range of programming-specific ligatures and symbols
- Offers variable fonts for more flexibility in weight and style
Cons of JetBrainsMono
- Less widespread adoption compared to FiraCode
- May have fewer stylistic variants and weights available
- Some users report that it feels less "polished" in certain rendering environments
Code Comparison
FiraCode:
if (x => 0 && x <= 100) {
console.log("x is between 0 and 100");
}
JetBrainsMono:
if (x >= 0 && x <= 100) {
console.log("x is between 0 and 100");
}
The main difference in this example is the rendering of the >=
operator. JetBrainsMono typically offers a more distinct ligature for this operator, which some developers find easier to read at a glance. However, both fonts provide clear and readable code presentation, with the choice often coming down to personal preference and the specific coding environment being used.
Monospaced font family for user interface and coding environments
Pros of Source Code Pro
- Wider range of weights and styles, offering more flexibility in design
- Developed by Adobe, ensuring professional-grade quality and support
- Extensive language support, including Cyrillic and Greek characters
Cons of Source Code Pro
- Lacks ligatures, which can enhance readability for certain programming constructs
- Less focus on programming-specific glyphs compared to FiraCode
- May not be as visually distinctive in coding environments
Code Comparison
Source Code Pro:
def example_function(x, y):
return x != y and x <= y
FiraCode:
def example_function(x, y):
return x != y and x <= y
In this comparison, FiraCode would display ligatures for !=
and <=
, while Source Code Pro would not. FiraCode's ligatures can make these operators more visually distinct and easier to read at a glance.
Both fonts are excellent choices for coding, with Source Code Pro offering a more traditional and versatile typeface, while FiraCode provides enhanced readability through programming-specific ligatures and glyphs. The choice between them often comes down to personal preference and specific use cases.
Versatile typeface for code, from code.
Pros of Iosevka
- Highly customizable with numerous build options
- Supports a wider range of Unicode characters
- Offers multiple stylistic sets and width variants
Cons of Iosevka
- Requires building from source for custom configurations
- Less widespread adoption compared to FiraCode
- May have inconsistent rendering on some systems
Code Comparison
FiraCode:
def example_function():
return [x for x in range(10) if x % 2 == 0]
Iosevka:
def example_function():
return [x for x in range(10) if x % 2 == 0]
Both fonts provide excellent readability for code, with clear distinctions between similar characters. FiraCode offers ligatures by default, which can enhance readability for some programmers. Iosevka's customizability allows users to choose whether to include ligatures or not.
Iosevka's flexibility in width and style makes it suitable for various coding environments and personal preferences. FiraCode, on the other hand, offers a more consistent out-of-the-box experience across different platforms and editors.
Ultimately, the choice between these two fonts depends on individual preferences, desired customization level, and specific use cases in programming environments.
A free programming font with cursive italics and ligatures. Donations welcome ❤️
Pros of Victor Mono
- Includes both serif and sans-serif variants, offering more style options
- Features a cursive italic style, which can enhance code readability
- Provides a wider range of font weights, from extra-light to extra-bold
Cons of Victor Mono
- Less extensive ligature support compared to FiraCode
- Newer and less widely adopted in development environments
- May have fewer specialized programming-specific character designs
Code Comparison
FiraCode:
if (x !== null && typeof x !== 'undefined') {
console.log('x is defined');
}
Victor Mono:
if (x !== null && typeof x !== 'undefined') {
console.log('x is defined');
}
While both fonts render code clearly, FiraCode's ligatures combine !==
into a single glyph, potentially improving readability. Victor Mono maintains separate characters but offers a distinct cursive style for italics, which can be beneficial for comments or emphasized code.
Both fonts are excellent choices for coding, with FiraCode being more established and Victor Mono offering unique stylistic options. The choice between them often comes down to personal preference and specific use cases.
A typeface designed for source code
Pros of Hack
- Designed specifically for source code and terminal use
- Offers four styles: Regular, Bold, Italic, and Bold Italic
- Extensive Unicode coverage, including many programming-specific symbols
Cons of Hack
- Fewer ligatures compared to FiraCode
- Less frequent updates and maintenance
- Limited community-driven development and contributions
Code Comparison
Hack:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
FiraCode:
if (condition) {
doSomething();
} else {
doSomethingElse();
}
The main difference in appearance would be the ligatures in FiraCode, such as the arrow-like =>
and ->
symbols, which are not present in Hack. FiraCode also features a more stylized appearance for certain characters like {}
and ()
.
Both fonts offer excellent readability and are well-suited for programming, but FiraCode's ligatures can enhance code aesthetics and symbol recognition for some developers. Hack, on the other hand, maintains a more traditional monospace appearance while still being optimized for source code display.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Fira Code: free monospaced font with programming ligatures
Read in Español | ç®ä½ä¸æ | æ¥æ¬èª
Problem
Programmers use a lot of symbols, often encoded with several characters. For the human brain, sequences like ->
, <=
or :=
are single logical tokens, even if they take two or three characters on the screen. Your eye spends a non-zero amount of energy to scan, parse and join multiple characters into a single logical one. Ideally, all programming languages should be designed with full-fledged Unicode symbols for operators, but thatâs not the case yet.
Solution
Fira Code is a free monospaced font containing ligatures for common programming multi-character combinations. This is just a font rendering feature: underlying code remains ASCII-compatible. This helps to read and understand code faster. For some frequent sequences like ..
or //
, ligatures allow us to correct spacing.
Download & Install
Then:
Sponsors
Fira Code is a personal, free-time project with no funding and a huge feature request backlog. If you love it, consider supporting its development via GitHub Sponsors or Patreon. Any help counts!
Huge thanks to:
Start selling to enterprise customers with just a few lines of code. Add Single Sign-On (and more) in minutes instead of months.
|
Whatâs in the box?
Left: ligatures as rendered in Fira Code. Right: same character sequences without ligatures.
Fira Code comes with a huge variety of arrows. Even better: you can make them as long as you like and combine start/middle/end fragments however you want!
Fira Code is not only about ligatures. Some fine-tuning is done for punctuation and frequent letter pairs.
Fira Code comes with a few different character variants (cv01
, cv02
, etc), stylistic sets (ss01
, ss02
, etc) and other font features (zero
, onum
, calt
, etc), so that everyone can choose whatâs best for them. How to enable
Some ligatures can be altered or enabled using stylistic sets/character variants:
Being a programming font, Fira Code has fantastic support for ASCII/box drawing, powerline and other forms of console UIs:
Fira Code is the first programming font to offer dedicated glyphs to render progress bars:
In action:
We hope more programming fonts will adopt this convention and ship their own versions.
Unicode coverage makes Fira Code a great choice for mathematical writing:
How does it look?
Editor compatibility list
Works | Doesnât work |
---|---|
Arduino IDE (2.0+,same instructions as vscode) | Adobe Dreamweaver |
Abricotine | Delphi IDE |
Android Studio (2.3+, instructions) | Standalone Emacs (workaround) |
Anjuta (unless at the EOF) | IDLE |
AppCode (2016.2+, instructions) | KDevelop 4 |
Atom 1.1 or newer (instructions) | Monkey Studio IDE |
BBEdit (14.6+ instructions) | UltraEdit (Windows) |
Brackets (with this plugin) | |
Chocolat | |
CLion (2016.2+, instructions) | |
Cloud9 (instructions) | |
Coda 2 | |
CodeLite | |
CodeRunner | |
Comma (Under: Preferences > Editor > Font) | |
CotEditor | |
Eclipse | |
elementary Code | |
Geany (1.37+) | |
gEdit / Pluma | |
GNOME Builder | |
Godot | |
GoormIDE (instructions) | |
gVim (Windows, GTK) | |
IntelliJ IDEA (2016.2+, instructions) | |
Kate, KWrite | |
KDevelop 5+ | |
Komodo | |
Leafpad | |
LibreOffice | |
LightTable (instructions) | |
LINQPad | |
MacVim 7.4 or newer (instructions) | |
Mancy | |
MATLAB (instructions) | |
Meld | |
Mousepad | |
NeoVim-gtk | |
NetBeans | |
Notepad (Windows) | |
Notepad++ (instructions) | |
Notepad3 (instructions) | |
Nova | |
PhpStorm (2016.2+, instructions) | |
PyCharm (2016.2+, instructions) | |
QOwnNotes (21.16.6+) | |
QtCreator | |
Rider | |
RStudio (instructions) | |
RubyMine (2016.2+, instructions) | |
Scratch | |
Scribus (1.5.3+) | |
SublimeText (3146+) | |
Spyder IDE (only with Qt5) | |
SuperCollider 3 | |
TeXShop | |
TextAdept (Linux, macOS) | |
TextEdit | |
TextMate 2 | |
UltraEdit (UEX) (Linux) | |
VimR (instructions) | |
Visual Studio (2015+, instructions) | |
Visual Studio Code (instructions) | |
WebStorm (2016.2+, instructions) | |
Xamarin Studio/Monodevelop | |
Xcode (8.0+, otherwise with plugin) | |
Xi | |
Probably work: Smultron, Vico | Under question: Code::Blocks IDE |
Terminal compatibility list
Works | Doesnât work |
---|---|
crosh (instructions) | Alacritty |
Hyper (see #3607) | Asbru Connection Manager |
iTerm 2 | Cmder |
Kitty | ConEmu |
Konsole | GNOME Terminal (ticket) |
Mintty | gtkterm (ticket) |
QTerminal | guake (ticket) |
st (patch) | LXTerminal (ticket) |
Tabby | mate-terminal |
Terminal.app | PuTTY |
Termux | rxvt |
Token2Shell | sakura (ticket) |
Wezâs terminal | SecureCRT |
Windows Terminal | Terminator (ticket) |
ZOC (macOS) | terminology |
Tilix | |
Windows Console | |
xfce4-terminal (ticket) | |
xterm | |
ZOC (Windows) |
Browser support
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css">
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css);
/* Specify in CSS */
code { font-family: 'Fira Code', monospace; }
@supports (font-variation-settings: normal) {
code { font-family: 'Fira Code VF', monospace; }
}
- IE 10+, Edge Legacy: enable with
font-feature-settings: "calt";
- Firefox
- Safari
- Chromium-based browsers (Chrome, Opera)
- ACE
- CodeMirror (enable with
font-variant-ligatures: contextual;
)
Projects using Fira Code
Alternatives
Free monospaced fonts with ligatures:
Paid monospaced fonts with ligatures:
Building Fira Code locally
In case you want to alter FiraCode.glyphs and build OTF/TTF/WOFF files yourself, this is the setup I use on macOS:
# install all required build tools
./script/bootstrap_macos.sh
# build the font files
./script/build.sh
# install OTFs to ~/Library/Fonts
cp distr/otf/*.otf ~/Library/Fonts
Alternatively, you can build Fira Code using Docker:
# install dependencies in a container and build the font files
make
# package the font files from dist/ into a zip
make package
If you want to permanently enable certain style sets or character variations, maybe because your editor of choice does not allow you to toggle these individually, you can provide the desired features as a comma separated list to the build script via the -f / --features
flag.
Default: none.
To separate different versions of your font you can specify the desired font family name with the -n / --family-name
flag. The special value 'features' will append a sorted, space separated list of enabled features to the default family name.
Default: "Fira Code"
You can also limit the font weights that will be created with the -w / --weights
option.
Default: "Light,Regular,Retina,Medium,SemiBold,Bold"
# locally in your shell
./script/build.sh --features "ss02,ss08,ss10,cv03,cv07,cv14" --family-name "Fira Code straight" --weights "Regular,Bold"
# or via a docker container (creates the family name 'Fira Code cv01 cv02 cv06 cv31 onum ss01 ss03 ss04 zero')
docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "cv01,cv02,cv06,ss01,zero,onum,ss03,ss04,cv31" -n "features"
# in Git Bash from Git for Windows, or any other MSYS2 based shell, you might need to disable path conversion
MSYS2_ARG_CONV_EXCL="*" docker run --rm -v "${PWD}":/opt tonsky/firacode:latest ./script/build.sh -f "ss02,ss03,ss04,ss05,ss06,ss07"
Credits
- Author: Nikita Prokopov @nikitonsky
- Based on: Fira Mono
- Inspired by: Hasklig
Top Related Projects
This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
JetBrains Mono – the free and open-source typeface for developers
Monospaced font family for user interface and coding environments
Versatile typeface for code, from code.
A free programming font with cursive italics and ligatures. Donations welcome ❤️
A typeface designed for source code
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot