• Stars
    star
    75,408
  • Rank 94 (Top 0.01 %)
  • Language
    Clojure
  • License
    SIL Open Font Lic...
  • Created about 10 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Free monospaced font with programming ligatures

Fira Code: free monospaced font with programming ligatures

Fira Code

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

Fira_Code_v6.2.zip - December 6, 2021 - 2.5 MB

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:

WorkOS
Your app, enterprise-ready.
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++ (with a workaround)
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
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/[email protected]/distr/fira_code.css">
/* CSS */
@import url(https://cdn.jsdelivr.net/npm/[email protected]/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

More Repositories

1

AnyBar

OS X menubar status indicator
Objective-C
5,877
star
2

datascript

Immutable database and Datalog query engine for Clojure, ClojureScript and JS
Clojure
5,446
star
3

rum

Simple, decomplected, isomorphic HTML UI library for Clojure and ClojureScript
HTML
1,791
star
4

vscode-theme-alabaster

A light theme for Visual Studio Code
Clojure
393
star
5

Clojure-Sublimed

Clojure support for Sublime Text 4
Clojure
353
star
6

tongue

Do-it-yourself i18n library for Clojure/Script
Clojure
306
star
7

Universal-Layout

Пакет из английской и русской раскладок, спроектированных для удобного совместного использования
Shell
300
star
8

uberdeps

Uberjar builder for deps.edn
Clojure
300
star
9

font-writer

Monospaced font for long-form writing
253
star
10

sublime-scheme-alabaster

Minimalist color scheme for Sublime Text 3
243
star
11

datascript-chat

Sample SPA using DataScript and core.async
Clojure
160
star
12

clj-reload

Smarter way to reload Clojure code
Clojure
149
star
13

grumpy

Minimalistic blog engine
Clojure
141
star
14

compact-uuids

Compact 26-char URL-safe representation of UUIDs
Clojure
129
star
15

net.async

Network commucations with clojure.core.async interface
Clojure
124
star
16

sublime-scheme-writer

A color scheme for focused long-form writing
122
star
17

clojure-future-spec

A backport of clojure.spec for Clojure 1.8
Clojure
115
star
18

intellij-alabaster

Alabaster color scheme for IntelliJ IDEA
101
star
19

datascript-transit

Transit handlers for DataScript database and datoms
Clojure
100
star
20

sublime-profiles

Profile Switcher for Sublime Text
Python
83
star
21

datascript-todo

DataScript ToDo Sample Application
Clojure
78
star
22

persistent-sorted-set

Fast B-tree based persistent sorted set for Clojure/Script
Clojure
78
star
23

tonsky.github.io

HTML
65
star
24

clojure-warrior

Visual Studio Code extension for Clojure development
TypeScript
57
star
25

cljs-drag-n-drop

Sane wrapper around Drag-n-Drop DOM API
Clojure
55
star
26

clj-simple-router

Simple order-independent Ring router
Clojure
53
star
27

vec

React.js + Immutable.js vector editor
JavaScript
51
star
28

clojure.unicode

Unicode symbols for Clojure
Clojure
49
star
29

41-socks

Simple match game in cljs+om+react
Clojure
37
star
30

remote-require

Require any Clojure snippet from anywhere in the Internet
Clojure
33
star
31

Sublime-Executor

Run any executable from your working dir in Sublime Text
Python
32
star
32

sane-math

Clojure/Script library for infix (normal) math expressions
Clojure
32
star
33

Heroes

A turn-based tactical game in ClojureScript, DataScript and Rum
Clojure
30
star
34

cljs-skeleton

Skeleton CLJS client/server app with WS, Transit, Rum
Clojure
30
star
35

icfpc2019-rust

Re-implementaion of https://github.com/tonsky/icfpc2019 in Rust to compare performance
Rust
29
star
36

alabaster-lighttable-skin

Light skin & theme for LightTable
CSS
27
star
37

openshift-clojure

Clojure/lein openshift cartridge template
Shell
26
star
38

datascript-storage-sql

SQL Storage implementation for DataScript
Clojure
24
star
39

sublime-scheme-commander

Retro color scheme for Sublime Text
23
star
40

Levinson-Layout

Keymap & EN/RU layouts for Levinson 40% split ortholinear keyboard
C
22
star
41

sublime-clojure-repl

Basic Clojure REPL for Sublime Text
Python
21
star
42

extend-clj

Easily extend clojure.core built-in protocols
Clojure
18
star
43

boot-anybar

A boot task reporting build status to AnyBar
Clojure
18
star
44

down-the-rabbit-hole

Entry to Ludum Dare 48
Clojure
16
star
45

bloknote

Fast online notepad
Clojure
16
star
46

sublime-color-schemes

Fun and simple color schemes for Sublime Text
Rust
15
star
47

katybot

Campfire bot written in Clojure
Clojure
14
star
48

toml-clj

Fast TOML parser for Clojure
Java
14
star
49

java-graphics-benchmark

Java Graphics benchmark
Java
13
star
50

Helix-Layout

C
13
star
51

datascript-menu

JavaScript
11
star
52

DarkModeToggle

Statusbar app to quickly toggle between light and dark modes
Swift
11
star
53

tonsky.me

Clojure
11
star
54

icfpc2021

Clojure
11
star
55

humble-ants

Clojure
10
star
56

advent-of-code

https://adventofcode.com/
Clojure
9
star
57

icfpc2019

Clojure
8
star
58

tgadmin

Clojure
7
star
59

jwm

Objective-C++
6
star
60

homm

Clojure
5
star
61

GMTKJam2022

GDScript
5
star
62

advent2018

Solutions to https://adventofcode.com/2018 in Clojure
Clojure
5
star
63

spectre

Fantom
3
star
64

imdbparse

Parser for IMDb text database
Clojure
3
star
65

icfpc2022

Clojure
3
star
66

clojure-bits

Clojure
3
star
67

tonsky

2
star
68

2017-05-RigaDevDays

JavaScript
2
star
69

clojure-bits-server

Clojure
2
star
70

2017-10-Reactive

JavaScript
2
star
71

lein-figwheel-immutant

[tonsky/figwheel-sidecar-immutant "0.5.9"]
Clojure
2
star
72

2018-05-UWDC

http://tonsky.me/2018-05-UWDC/slides/
JavaScript
2
star
73

codingame-fall-2022

Coding Games Fall Challenge 2022
Clojure
2
star
74

datascript-perf

Datasets for DataScript perf testing
Clojure
2
star
75

grumpy_video

1
star
76

icfpc2023

Clojure
1
star
77

roam-calculator

Shell
1
star
78

datascript_compiler_race

Clojure
1
star
79

ldjam53

GDScript
1
star
80

glutin_resize_issue

Rust
1
star