1
1
mirror of https://github.com/tonsky/FiraCode.git synced 2024-08-16 00:10:49 +03:00
FiraCode/README.md
2015-07-16 22:13:24 +05:00

114 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Fira Code: monospaced font with programming ligatures
#### [Download Fira Code v0.5](https://github.com/tonsky/FiraCode/releases/download/0.5/FiraCode-Regular.otf)
### Problem
Programmers use a lot of symbols, often encoded with several characters. For human brain sequences like `->`, `<=` or `:=` are single logical token, even if they take two or three places on the screen. Your eye spends 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 thats not the case yet.
### Solution
Fira Code is a Fira Mono font extended with a set of 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.
### Fira Code (with ligatures):
<img src="./showcases/all_ligatures.png" />
Compare to Fira Mono (without ligatures):
<img src="./showcases/no_ligatures.png" />
### Editor support
Do **not** work:
- Atom ([bug](https://github.com/atom/atom/issues/6055))
- SublimeText ([vote here](http://sublimetext.userecho.com/topic/433445-opentype-support-ligatures-curly-quotes-contextual-and-alternate-symbols/))
- Intellij Idea ([vote here](https://youtrack.jetbrains.com/issue/IDEA-127539))
- XCode
- iTerm 2 ([feature request](https://gitlab.com/gnachman/iterm2/issues/3568))
- OS X Terminal.app
- Emacs
- gVim, MacVim
Do work:
- Visual Studio
- TextMate 2
- QtCreator
- LightTable ([instructions](https://github.com/LightTable/LightTable/issues/1459#issuecomment-57366504))
- BBEdit ([instructions](https://github.com/i-tu/Hasklig/issues/3#issue-46601683))
- Chocolat
Should work (copied from [Hasklig README](https://github.com/i-tu/Hasklig)):
- Geany
- gEdit
- Kate
- Konsole
- KWrite
- Smultron
- Vico
_Note:_ Im not a font designer, and Fira Code is built in sort of [a hacky way](https://github.com/mozilla/Fira/issues/62) from OTF version of Fira Mono. Please forgive me if it doesnt work for you. Help will be greatly appreciated.
### Code examples
Ruby:
<img src="./showcases/ruby.png" />
JavaScript:
<img src="./showcases/javascript.png" />
Erlang:
<img src="./showcases/erlang.png" />
Go:
<img src="./showcases/go.png" />
Haskell:
<img src="./showcases/haskell.png" />
### Alternatives
Another monospaced fonts with ligatures:
- [Hasklig](https://github.com/i-tu/Hasklig) (free)
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm) (€59)
- [Monoid](http://larsenwork.com/monoid/) (free)
### Credits
This work is based on OFL-licensed [Fira Mono font](https://github.com/mozilla/Fira). Original Fira Mono font was not changed, only extended.
Fira Code was inspired by [Hasklig font](https://github.com/i-tu/Hasklig): Ligatures for Haskell code
### Changelog
**0.5**: `#{` `~-` `-~` `<==` `==>` `///` `;;` `</`
**0.4**:
- Added `~=` `~~` `#[`
- Rolled back `&&` and `||` to more traditional look
- `===` and `!==` are now rendered with 3 horisontal bars
**0.3**: `~@` `#?` `=:=` `=<`
**0.2.1**: Fixed width of `&&` and `||`
**0.2**: `-->` `<--` `&&` `||` `=>>` `=/=`
**0.1**
`>>=` `=<<` `<<=` `->>` `->` `=>` `<<-` `<-`
`===` `==` `<=>` `>=` `<=` `>>` `<<` `!==` `!=` `<>`
`:=` `++` `#(` `#_`
`::` `...` `..` `!!` `//` `/*` `*/` `/>`