234
FiraCode.glyphs
89
README.md
|
@ -1,6 +1,6 @@
|
||||||
## Fira Code: monospaced font with programming ligatures
|
## Fira Code: free monospaced font with programming ligatures
|
||||||
|
|
||||||
<img src="./showcases/fira_code_logo.svg">
|
<img src="./extras/logo.svg">
|
||||||
|
|
||||||
### Problem
|
### Problem
|
||||||
|
|
||||||
|
@ -8,60 +8,77 @@ Programmers use a lot of symbols, often encoded with several characters. For the
|
||||||
|
|
||||||
### Solution
|
### Solution
|
||||||
|
|
||||||
#### [Download v.2](https://github.com/tonsky/FiraCode/releases/download/2/FiraCode_2.zip) · [How to install](https://github.com/tonsky/FiraCode/wiki) · [Troubleshooting](https://github.com/tonsky/FiraCode/wiki#troubleshooting) · [News & updates](https://twitter.com/FiraCode)
|
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.
|
||||||
|
|
||||||
<a href="https://patreon.com/tonsky" target="_blank"><img src="./fira_code_patreon.png"></a>
|
### Download & Install
|
||||||
|
|
||||||
Fira Code is an extension of the Fira Mono font containing 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.
|
**<a href="https://github.com/tonsky/FiraCode/releases/download/3/FiraCode_3.zip">Download Fira Code v3</a>**
|
||||||
|
|
||||||
<img src="./showcases/all_ligatures.png">
|
Then:
|
||||||
|
|
||||||
|
- <a href="https://github.com/tonsky/FiraCode/wiki">How to Install</a>
|
||||||
|
- <a href="https://github.com/tonsky/FiraCode/wiki#troubleshooting">Troubleshooting</a>
|
||||||
|
- <a href="https://twitter.com/FiraCode">News & Updates</a>
|
||||||
|
|
||||||
|
### Support
|
||||||
|
|
||||||
|
<a href="https://github.com/sponsors/tonsky" target="_blank"><img src="./extras/sponsor.png"></a>
|
||||||
|
|
||||||
|
Fira Code is a personal, free-time project with no funding and huge [feature request backlog](https://github.com/tonsky/FiraCode/issues). If you love it, consider supporting its development via [GitHub Sponsors](https://github.com/sponsors/tonsky) or [Patreon](https://patreon.com/tonsky). Any help counts!
|
||||||
|
|
||||||
|
### What’s in the box?
|
||||||
|
|
||||||
|
Left: ligatures as rendered in Fira Code. Right: same character sequences without ligatures.
|
||||||
|
|
||||||
|
<img src="./showcases/v3/all_ligatures.png">
|
||||||
|
|
||||||
|
Fira Code comes with a few different character variants, so that everyone can choose what’s best for them. [How to enable](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
|
||||||
|
|
||||||
|
<img src="./showcases/v3/stylistic_sets.png">
|
||||||
|
|
||||||
|
In addition to that, Fira Code contains huge variety of Unicode characters well-suited for technical writing, math formulas and terminal UIs.
|
||||||
|
|
||||||
|
<img src="./showcases/v3/unicode.png">
|
||||||
|
|
||||||
### Code examples
|
### Code examples
|
||||||
|
|
||||||
Ruby:
|
Ruby:
|
||||||
|
|
||||||
<img src="./showcases/ruby.png">
|
<img src="./showcases/v3/ruby.png">
|
||||||
|
|
||||||
JavaScript:
|
JavaScript:
|
||||||
|
|
||||||
<img src="./showcases/javascript.png">
|
<img src="./showcases/v3/javascript.png">
|
||||||
|
|
||||||
PHP:
|
PHP:
|
||||||
|
|
||||||
<img src="./showcases/php.png">
|
<img src="./showcases/v3/php.png">
|
||||||
|
|
||||||
Erlang:
|
Erlang:
|
||||||
|
|
||||||
<img src="./showcases/erlang.png">
|
<img src="./showcases/v3/erlang.png">
|
||||||
|
|
||||||
Elixir:
|
Elixir:
|
||||||
|
|
||||||
<img src="/showcases/elixir.png">
|
<img src="/showcases/v3/elixir.png">
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
|
||||||
<img src="./showcases/go.png">
|
<img src="./showcases/v3/go.png">
|
||||||
|
|
||||||
LiveScript:
|
LiveScript:
|
||||||
|
|
||||||
<img src="./showcases/livescript.png">
|
<img src="./showcases/v3/livescript.png">
|
||||||
|
|
||||||
Clojure:
|
Clojure:
|
||||||
|
|
||||||
<img src="./showcases/clojure.png">
|
<img src="./showcases/v3/clojure.png">
|
||||||
|
|
||||||
Swift:
|
Swift:
|
||||||
|
|
||||||
<img src="./showcases/swift.png">
|
<img src="./showcases/v3/swift.png">
|
||||||
|
|
||||||
### Stylistic sets
|
### Terminal compatibility list
|
||||||
|
|
||||||
See [How to enable](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylistic-sets)
|
|
||||||
|
|
||||||
<img src="./showcases/stylistic_sets.png">
|
|
||||||
|
|
||||||
|
|
||||||
### Terminal support
|
|
||||||
|
|
||||||
| Works | Doesn’t work |
|
| Works | Doesn’t work |
|
||||||
| ------------------ | ------------------ |
|
| ------------------ | ------------------ |
|
||||||
|
@ -80,7 +97,7 @@ See [How to enable](https://github.com/tonsky/FiraCode/wiki/How-to-enable-stylis
|
||||||
| **Windows Terminal** |
|
| **Windows Terminal** |
|
||||||
| **ZOC** (macOS) |
|
| **ZOC** (macOS) |
|
||||||
|
|
||||||
### Editor support
|
### Editor compatibility list
|
||||||
|
|
||||||
| Works | Doesn’t work |
|
| Works | Doesn’t work |
|
||||||
| ----- | -------------- |
|
| ----- | -------------- |
|
||||||
|
@ -184,17 +201,21 @@ code { font-family: 'Fira Code', monospace; }
|
||||||
|
|
||||||
### Alternatives
|
### Alternatives
|
||||||
|
|
||||||
Other monospaced fonts with ligatures:
|
Other free monospaced fonts with ligatures:
|
||||||
|
|
||||||
- [Hasklig](https://github.com/i-tu/Hasklig) (free)
|
- [Hasklig](https://github.com/i-tu/Hasklig)
|
||||||
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm) (€59)
|
- [Monoid](http://larsenwork.com/monoid/)
|
||||||
- [Monoid](http://larsenwork.com/monoid/) (free)
|
- [Fixedsys Excelsior](https://github.com/kika/fixedsys)
|
||||||
- [Fixedsys Excelsior](https://github.com/kika/fixedsys) (free)
|
- [Iosevka](https://be5invis.github.io/Iosevka/)
|
||||||
- [Iosevka](https://be5invis.github.io/Iosevka/) (free)
|
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode)
|
||||||
- [DejaVu Sans Code](https://github.com/SSNikolaevich/DejaVuSansCode) (free)
|
- [Victor Mono](https://rubjo.github.io/victor-mono/)
|
||||||
- [Victor Mono](https://rubjo.github.io/victor-mono/) (free)
|
- [Cascadia Code](https://github.com/microsoft/cascadia-code)
|
||||||
- [Cascadia Code](https://github.com/microsoft/cascadia-code) (free)
|
- [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono)
|
||||||
- [JetBrains Mono](https://github.com/JetBrains/JetBrainsMono) (free)
|
|
||||||
|
Paid monospaced fonts with ligatures:
|
||||||
|
|
||||||
|
- [PragmataPro](http://www.fsd.it/fonts/pragmatapro.htm)
|
||||||
|
- [Mono Lisa](https://monolisa.dev/)
|
||||||
|
|
||||||
### Building Fira Code locally
|
### Building Fira Code locally
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
||||||
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
|
last3 = reverse <i>>></i> take 3 <i>>></i> reverse</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="code semibold"><b># Fira Code Medium</b>
|
<div class="code semibold"><b># Fira Code SemiBold</b>
|
||||||
|
|
||||||
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
take = (n, [x, <i>...</i>xs]:list) <i>--></i>
|
||||||
| n <i><=</i> 0 <i>=></i> []
|
| n <i><=</i> 0 <i>=></i> []
|
||||||
|
|
Przed Szerokość: | Wysokość: | Rozmiar: 56 KiB Po Szerokość: | Wysokość: | Rozmiar: 56 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 35 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 1.2 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 17 KiB |
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
rm -rf distr/variable_ttf
|
||||||
|
fontmake -g FiraCode.glyphs -o variable --output-dir distr/variable_ttf
|
||||||
|
|
||||||
|
# -------------------------------------------------------------
|
||||||
|
# fix variable font metadata as needed ------------------------
|
||||||
|
|
||||||
|
firaCodeVF=distr/variable_ttf/FiraCode-VF.ttf
|
||||||
|
|
||||||
|
# fix variable font metadata – very important
|
||||||
|
gftools fix-vf-meta $firaCodeVF
|
||||||
|
|
||||||
|
# other fixes for metadata and hinting
|
||||||
|
gftools fix-nonhinting $firaCodeVF $firaCodeVF
|
||||||
|
gftools fix-gasp --autofix $firaCodeVF
|
||||||
|
gftools fix-dsig --autofix $firaCodeVF
|
||||||
|
|
||||||
|
# cleanup of temp files
|
||||||
|
tempFiles=$(ls distr/variable_ttf/*.fix && ls distr/variable_ttf/*-gasp*)
|
||||||
|
for temp in $tempFiles
|
||||||
|
do
|
||||||
|
rm -rf $temp
|
||||||
|
done
|
||||||
|
|
||||||
|
# TODO (late 2019?): use TTFautohint-VF for variable font (current support is minimal)
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
# requires sfnt2woff-zopfli (get from https://github.com/bramstein/homebrew-webfonttools)
|
||||||
|
|
||||||
|
rm -rf distr/woff
|
||||||
|
|
||||||
|
ttfs=$(ls distr/*/*.ttf)
|
||||||
|
for ttf in $ttfs; do
|
||||||
|
sfnt2woff-zopfli $ttf
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p distr/woff
|
||||||
|
woffs=$(ls distr/*/*.woff)
|
||||||
|
for woff in $woffs; do
|
||||||
|
mv $woff distr/woff/$(basename $woff)
|
||||||
|
done
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
# requires woff2_compress (get from https://github.com/bramstein/homebrew-webfonttools)
|
||||||
|
|
||||||
|
rm -rf distr/woff2
|
||||||
|
|
||||||
|
ttfs=$(ls distr/*/*.ttf)
|
||||||
|
for ttf in $ttfs; do
|
||||||
|
woff2_compress $ttf
|
||||||
|
done
|
||||||
|
|
||||||
|
mkdir -p distr/woff2
|
||||||
|
woff2s=$(ls distr/*/*.woff2)
|
||||||
|
for woff2 in $woff2s; do
|
||||||
|
mv $woff2 distr/woff2/$(basename $woff2)
|
||||||
|
done
|
Przed Szerokość: | Wysokość: | Rozmiar: 123 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 20 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 30 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 15 KiB |
BIN
showcases/go.png
Przed Szerokość: | Wysokość: | Rozmiar: 16 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 33 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 12 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 20 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 22 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 34 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 20 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 266 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 44 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 64 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 32 KiB |
Przed Szerokość: | Wysokość: | Rozmiar: 36 KiB Po Szerokość: | Wysokość: | Rozmiar: 36 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 33 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 67 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 25 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 41 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 45 KiB |
|
@ -1,29 +1,29 @@
|
||||||
.= .- := ::= =:= __
|
.= .- ..= := ::= =:= __
|
||||||
== != === !== =/= =!=
|
== != === !== =/= =!=
|
||||||
|
|
||||||
<-< <<- <-- <- <-> -> --> ->> >->
|
<-< <<- <-- <- <-> -> --> ->> >->
|
||||||
<=< <<= <== <=> => ==> =>> >=>
|
<=< <<= <== <<->> <=> => ==> =>> >=>
|
||||||
>>= >>- >- <~> -< -<< =<<
|
>>= >>- >- <~> -< -<< =<<
|
||||||
<-| <=| /\ \/ |-> |=>
|
<-| <=| /\ \/ |-> |=>
|
||||||
<~~ <~ ~~ ~> ~~>
|
<~~ <~ ~~ ~> ~~>
|
||||||
|
|
||||||
<<< << <= <> >= >> >>>
|
<<< << <= <> >= >> >>>
|
||||||
{. {| [| <: ✓ :> |] |} .}
|
{. {| [| <: :> |] |} .}
|
||||||
<||| <|| <| <|> |> ||> |||>
|
<||| <|| <| <|> |> ||> |||>
|
||||||
|
|
||||||
<$ <$> $>
|
<$ <$> $>
|
||||||
<+ <+> +>
|
<+ <+> +>
|
||||||
<* <*> *>
|
<* <*> *>
|
||||||
|
|
||||||
\ \\ /* */ /// //
|
\n \\ /* */ /// //
|
||||||
</ <!-- </> --> />
|
</ <!-- </> --> />
|
||||||
0xF www fl Fl Tl
|
0xF www Fl Tl Il fi fj
|
||||||
|
|
||||||
;; :: ::: !! ?? %% &&
|
;; :: ::: !! ?? %% &&
|
||||||
|| .. ... ..< .? ?. ?:
|
|| .. ... ..< .? ?.
|
||||||
-- --- ++ +++ ** ***
|
-- --- ++ +++ ** ***
|
||||||
|
|
||||||
~= ~- -~ ~@
|
=~ !~ ~- -~ ~@
|
||||||
^= ?= /= /==
|
^= ?= /= /==
|
||||||
-| _|_ |- ||- |= ||=
|
-| _|_ |- ||- |= ||=
|
||||||
#! #= ## ### ####
|
#! #= ## ### ####
|
||||||
|
@ -37,12 +37,22 @@ a-b a-A B-b A-B -a -A a- A-
|
||||||
a+b a+A B+b A+B +a +A a+ A+
|
a+b a+A B+b A+B +a +A a+ A+
|
||||||
a:b a:A B:b A:B :a :A a: A:
|
a:b a:A B:b A:B :a :A a: A:
|
||||||
|
|
||||||
|
# Powerline
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Stylistic sets
|
||||||
|
|
||||||
|
r 0 123456789 & && $ <$ <$> $> @ <= >=
|
||||||
|
|
||||||
# Unicode
|
# Unicode
|
||||||
|
|
||||||
≢ ẞ ᐅ ᐊ ∴ ∵ ⎈ ‖ ∧ ∨ ⊢ ⊣ ⊤ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯
|
≢ ẞ ᐅ ᐊ ∴ ∵ ⎈ ‖ ∧ ∨ ⊢ ⊣ ⊤ ⊥ ⊦ ⊧ ⊨ ⊩ ⊪ ⊫ ⊬ ⊭ ⊮ ⊯
|
||||||
⟲⟳ ⟰ ⟱ ⟴ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿
|
⟲⟳ ⟰ ⟱ ⟴ ⟵ ⟶ ⟷ ⟸ ⟹ ⟺ ⟻ ⟼ ⟽ ⟾ ⟿
|
||||||
↩ ⇞ ⇟ ⇤ ⇥ ⌀ ⌃ ⌄ ⌅ ⌆ ⌘ ⌤ ⌥ ⎇ ⎋ ⏏ ☐ ☑ ☒
|
↩ ⇞ ⇟ ⇤ ⇥ ⌀ ⌃ ⌄ ⌅ ⌆ ⌘ ⌤ ⌥ ⎇ ⎋ ⏏ ✓ ☐ ☑ ☒ ▤ ▦ ▧ ▨ ▩
|
||||||
␆ ␈ ␇ ␣ ␢ ␘ ␍ ␐ ␡ ␥ ␔ ␑ ␓ ␒ ␙ ␃ ␄ ␗ ␅ ␛ ␜ ␌ ␝ ␉ ␊ ␕  ␀ ␞ ␏ ␎ ␠ ␁ ␂ ␚ ␦ ␖ ␟ ␋
|
␆ ␈ ␇ ␣ ␢ ␘ ␍ ␐ ␡ ␥ ␔ ␑ ␓ ␒ ␙ ␃ ␄ ␗ ␅ ␛ ␜ ␌ ␝ ␉ ␊ ␕  ␀ ␞ ␏ ␎ ␠ ␁ ␂ ␚ ␦ ␖ ␟ ␋
|
||||||
|
ℂ ℍ ℕ ℙ ℚ ℝ ℤ 𝔹 ∀ ∃ ∄ ∅ ⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉ ⊊ ⊋ ∈ ∉ ∊ ∋ ∌ ∍ ∪ ∩
|
||||||
|
☰ ☱ ☲ ☳ ☴ ☵ ☶ ☷ 「a」 「a」
|
||||||
|
|
||||||
# Box drawing
|
# Box drawing
|
||||||
|
|
||||||
|
@ -51,9 +61,15 @@ a:b a:A B:b A:B :a :A a: A:
|
||||||
╎ ╏ ┆ ┇ ┊ ┋
|
╎ ╏ ┆ ┇ ┊ ┋
|
||||||
╰╍╍╍╍╯ ╰┅┅┅┅╯ ╰┉┉┉┉╯
|
╰╍╍╍╍╯ ╰┅┅┅┅╯ ╰┉┉┉┉╯
|
||||||
|
|
||||||
|
┌─┬─┐ ╔╦═╗ ┏━┳┓ ╒═╤═╗ ╭─┰─╮
|
||||||
|
├─┼─┤ ╠╬═╣ ┣━╋┫ ├─┼─╢ ┝━╋━┥
|
||||||
|
└─┴─┘ ╚╩═╝ ┗━┻┛ ╘═╧═╝ ╰─┸─╯
|
||||||
|
|
||||||
# Blocks
|
# Blocks
|
||||||
|
|
||||||
|███ | 50%
|
|███ | 50%
|
||||||
|
|
||||||
|
▖ ▗ ▙ ▚ ▛ ▜ ▞ ▟
|
||||||
|
|
||||||
▁▂▃▄▅▆▇█▀▔
|
▁▂▃▄▅▆▇█▀▔
|
||||||
▏
|
▏
|
Po Szerokość: | Wysokość: | Rozmiar: 70 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 43 KiB |
Po Szerokość: | Wysokość: | Rozmiar: 92 KiB |