Skip to content

Commit

Permalink
Fira Code v4
Browse files Browse the repository at this point in the history
  • Loading branch information
tonsky committed May 18, 2020
1 parent 5ef7ba1 commit d42e727
Show file tree
Hide file tree
Showing 57 changed files with 102 additions and 91 deletions.
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

All notable changes to this project will be documented in this file.

#### 4.0 (May 10, 2020)
#### 4.0 (May 18, 2020)

Removed 44 individual arrow ligatures, replaced with four universal, combinative substitutions. 100-150% faster shaping performance, infinite amount of arrow combinations.

- Arbitrary-long combinative hyphen-based arrows #346 #494 #713 #826 #968 #983 #1029
- Arbitrary-long combinative equal-based arrows #229 #234 #346 #494 #698 #826 #919 #931 #946 #948 #968 #1016 #1018 #1022
- Arbitrary-long underscores #120 #269 #346 #494
- Arbitrary-long numbersign sequences #1014
- Fixed descender in U+040F `Џ`
- Undid #995 and properly fixed U+04CB `Ӌ`, U+04CC`ӌ` #1001 and U+0449 `щ` #1007
- Added `|||` to prevent partial ligatures in `|||-|||` `|||=|||` #346

#### 3.1 (April 15, 2020)

Expand Down
37 changes: 17 additions & 20 deletions FiraCode.glyphs

Large diffs are not rendered by default.

100 changes: 39 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Fira Code is a free monospaced font containing ligatures for common programming

### Download & Install

**<a href="https://github.com/tonsky/FiraCode/releases/download/3.1/FiraCode_3.1.zip">Download Fira Code v3.1</a>**
<a href="https://github.com/tonsky/FiraCode/releases/download/4/Fira_Code_v4.zip"><img src="./extras/download.png" width="520" height="130"></a>

Then:

Expand All @@ -30,78 +30,37 @@ Fira Code is a personal, free-time project with no funding and huge [feature req

Left: ligatures as rendered in Fira Code. Right: same character sequences without ligatures.

<img src="./showcases/v3/all_ligatures.png">
<img src="./extras/ligatures.png" width="754" height="1326">

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)
Fira Code comes with huge variety of arrows. Even better: you can make them as long as you like and combine start/middle/end fragments however you want!

<img src="./showcases/v3/stylistic_sets.png">
<img src="./extras/arrows.png" width="754" height="799">

In addition to that, Fira Code contains huge variety of Unicode characters well-suited for technical writing, math formulas and terminal UIs.
Fira Code is not only about ligatures. Some fine-tuning is done for punctuation and frequent letter pairs.

<img src="./showcases/v3/unicode.png">
<img src="./extras/typographics.png" width="754" height="649">

### Code examples
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)

Ruby:
<img src="./extras/stylistic_sets.png" width="754" height="391">

<img src="./showcases/v3/ruby.png">
Being programming font, Fira Code has fantastic support for ASCII/box drawing, powerline and other forms of console UIs.

JavaScript:
<img src="./extras/console.png" width="754" height="357">

<img src="./showcases/v3/javascript.png">
Unicode coverage makes Fira Code great choice for mathematical writing.

PHP:
<img src="./extras/math.png" width="754" height="289">

<img src="./showcases/v3/php.png">
### How does it look?

Erlang:

<img src="./showcases/v3/erlang.png">

Elixir:

<img src="/showcases/v3/elixir.png">

Go:

<img src="./showcases/v3/go.png">

LiveScript:

<img src="./showcases/v3/livescript.png">

Clojure:

<img src="./showcases/v3/clojure.png">

Swift:

<img src="./showcases/v3/swift.png">

### Terminal compatibility list

| Works | Doesn’t work |
| ------------------ | ------------------ |
| **Butterfly** | **Alacritty** |
| **crosh** (ChromeOS, [instructions](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | **Windows Console (conhost.exe)** |
| **Hyper.app** | **Cmder** |
| **iTerm 2** ([3.1+](https://gitlab.com/gnachman/iterm2/issues/3568#note_13118332)) | **ConEmu** |
| **Kitty** | **GNOME Terminal** |
| **Konsole** | **mate-terminal** |
| **mintty** (partial support [2.8.3+](https://github.com/mintty/mintty/issues/601))| **PuTTY** |
| **QTerminal** | **rxvt** |
| **Terminal.app** | **xterm** |
| **Termux** | **ZOC** (Windows) |
| **Token2Shell/MD** | **gtkterm, guake, LXTerminal, sakura, Terminator, xfce4-terminal,** and other libvte-based terminals ([bug report](https://bugzilla.gnome.org/show_bug.cgi?id=584160)) |
| **upterm** |
| **Windows Terminal** |
| **ZOC** (macOS) |
| **st** ([patch](https://st.suckless.org/patches/ligatures/)) |
<img src="./extras/samples.png" width="754" height="1068">
<img src="./extras/samples2.png" width="754" height="1257">

### Editor compatibility list

| Works | Doesn’t work |
| ----- | -------------- |
|-------|----------------|
| **Abricotine** | **Arduino IDE** |
| **Android Studio** (2.3+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Adobe Dreamweaver** |
| **Anjuta** (unless at the EOF) | **Delphi IDE** |
Expand Down Expand Up @@ -160,16 +119,36 @@ Swift:
| **Xi** |
| Probably work: **Smultron, Vico** | Under question: **Code::Blocks IDE** |

### Terminal compatibility list

| Works | Doesn’t work |
|--------------------|--------------------|
| **Butterfly** | **Alacritty** |
| **crosh** (ChromeOS, [instructions](https://github.com/tonsky/FiraCode/wiki/ChromeOS-Terminal)) | **Windows Console (conhost.exe)** |
| **Hyper.app** | **Cmder** |
| **iTerm 2** ([3.1+](https://gitlab.com/gnachman/iterm2/issues/3568#note_13118332)) | **ConEmu** |
| **Kitty** | **GNOME Terminal** |
| **Konsole** | **mate-terminal** |
| **mintty** (partial support [2.8.3+](https://github.com/mintty/mintty/issues/601))| **PuTTY** |
| **QTerminal** | **rxvt** |
| **Terminal.app** | **xterm** |
| **Termux** | **ZOC** (Windows) |
| **Token2Shell/MD** | **gtkterm, guake, LXTerminal, sakura, Terminator, xfce4-terminal,** and other libvte-based terminals ([bug report](https://bugzilla.gnome.org/show_bug.cgi?id=584160)) |
| **upterm** |
| **Windows Terminal** |
| **ZOC** (macOS) |
| **st** ([patch](https://st.suckless.org/patches/ligatures/)) |

### Browser support

```html
<!-- HTML -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tonsky/FiraCode@3/distr/fira_code.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/tonsky/FiraCode@4/distr/fira_code.css">
```

```css
/* CSS */
@import url(https://cdn.jsdelivr.net/gh/tonsky/FiraCode@3/distr/fira_code.css);
@import url(https://cdn.jsdelivr.net/gh/tonsky/FiraCode@4/distr/fira_code.css);
```

```css
Expand All @@ -181,7 +160,6 @@ code { font-family: 'Fira Code', monospace; }
}
```


- IE 10+, Edge Legacy: enable with `font-feature-settings: "calt";`
- Firefox
- Safari
Expand All @@ -203,7 +181,7 @@ code { font-family: 'Fira Code', monospace; }

### Alternatives

Other free monospaced fonts with ligatures:
Free monospaced fonts with ligatures:

- [Hasklig](https://github.com/i-tu/Hasklig)
- [Monoid](http://larsenwork.com/monoid/)
Expand Down
Binary file modified distr/otf/FiraCode-Bold.otf
Binary file not shown.
Binary file modified distr/otf/FiraCode-Light.otf
Binary file not shown.
Binary file modified distr/otf/FiraCode-Medium.otf
Binary file not shown.
Binary file modified distr/otf/FiraCode-Regular.otf
Binary file not shown.
Binary file modified distr/otf/FiraCode-Retina.otf
Binary file not shown.
Binary file modified distr/otf/FiraCode-SemiBold.otf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-Bold.ttf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-Light.ttf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-Medium.ttf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-Regular.ttf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-Retina.ttf
Binary file not shown.
Binary file modified distr/ttf/FiraCode-SemiBold.ttf
Binary file not shown.
Binary file modified distr/variable_ttf/FiraCode-VF.ttf
Binary file not shown.
Binary file modified distr/variable_ttf/FiraCodeGX.ttf
Binary file not shown.
Binary file modified distr/woff/FiraCode-Bold.woff
Binary file not shown.
Binary file modified distr/woff/FiraCode-Light.woff
Binary file not shown.
Binary file modified distr/woff/FiraCode-Medium.woff
Binary file not shown.
Binary file modified distr/woff/FiraCode-Regular.woff
Binary file not shown.
Binary file modified distr/woff/FiraCode-SemiBold.woff
Binary file not shown.
Binary file modified distr/woff/FiraCode-VF.woff
Binary file not shown.
Binary file modified distr/woff2/FiraCode-Bold.woff2
Binary file not shown.
Binary file modified distr/woff2/FiraCode-Light.woff2
Binary file not shown.
Binary file modified distr/woff2/FiraCode-Medium.woff2
Binary file not shown.
Binary file modified distr/woff2/FiraCode-Regular.woff2
Binary file not shown.
Binary file modified distr/woff2/FiraCode-SemiBold.woff2
Binary file not shown.
Binary file modified distr/woff2/FiraCode-VF.woff2
Binary file not shown.
Binary file added extras/arrows.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/console.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/download.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/ligatures.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/math.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/samples.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/samples2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
Binary file added extras/stylistic_sets.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extras/typographics.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "firacode",
"version": "3.1.0",
"version": "4.0.0",
"description": "Fira Code: monospaced font with programming ligatures",
"main": "distr/fira_code.css",
"keywords": [
Expand Down
14 changes: 7 additions & 7 deletions script/bootstrap
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
#! /bin/bash -ex

sudo easy_install pip
pip3 install virtualenv --user
sudo easy_install-3.7 pip
pip install virtualenv --user
python3 -m virtualenv venv
source venv/bin/activate

# https://github.com/googlefonts/gftools/issues/121
brew install pkg-config
pip3 install -U Pillow==5.4.1 idna==2.8 requests==2.21.0 urllib3==1.24.1
pip install -U Pillow==5.4.1 idna==2.8 requests==2.21.0 urllib3==1.24.1
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
pip3 install pycairo
pip3 install git+https://github.com/googlefonts/gftools
pip install pycairo
pip install git+https://github.com/googlefonts/gftools

pip3 install fontmake
pip install fontmake
brew install ttfautohint
brew install woff2
brew tap bramstein/webfonttools
brew install sfnt2woff-zopfli
pip3 install fontbakery
pip install fontbakery
2 changes: 2 additions & 0 deletions script/build_woff
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ for ttf in $ttfs; do
sfnt2woff-zopfli $ttf
done

rm distr/ttf/FiraCode-Retina.woff

mkdir -p distr/woff
woffs=$(ls distr/*/*.woff)
for woff in $woffs; do
Expand Down
4 changes: 3 additions & 1 deletion script/build_woff2
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ for ttf in $ttfs; do
woff2_compress $ttf
done

rm distr/ttf/FiraCode-Retina.woff2

mkdir -p distr/woff2
woff2s=$(ls distr/*/*.woff2)
for woff2 in $woff2s; do
mv $woff2 distr/woff2/$(basename $woff2)
done
done
29 changes: 29 additions & 0 deletions script/package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/zsh -euo pipefail

cd "`dirname $0`/.."


setopt BASH_REMATCH
MAJOR=`cat FiraCode.glyphs | grep versionMajor`
VERSION=""

if [[ $MAJOR =~ 'versionMajor = ([0-9]+);' ]] ; then
VERSION="${BASH_REMATCH[2]}"
fi

MINOR=`cat FiraCode.glyphs | grep versionMinor`
if [[ $MINOR =~ 'versionMinor = ([0-9]+);' ]] ; then
MATCH="${BASH_REMATCH[2]}"
if [ "$MATCH" != "0" ] ; then
VERSION="$VERSION.$MATCH"
fi
fi

FILE="Fira_Code_v$VERSION.zip"
rm -f $FILE

pushd distr
find . -not -name ".*" | xargs zip ../$FILE
popd

ls -lah $FILE
Binary file removed showcases/v3/all_ligatures.png
Binary file not shown.
Binary file removed showcases/v3/clojure.png
Binary file not shown.
Binary file removed showcases/v3/elixir.png
Binary file not shown.
Binary file removed showcases/v3/erlang.png
Binary file not shown.
Binary file removed showcases/v3/feature_calt_centering.png
Binary file not shown.
Binary file removed showcases/v3/go.png
Binary file not shown.
Binary file removed showcases/v3/javascript.png
Binary file not shown.
Binary file removed showcases/v3/livescript.png
Binary file not shown.
Binary file removed showcases/v3/php.png
Binary file not shown.
Binary file removed showcases/v3/ruby.png
Binary file not shown.
Binary file removed showcases/v3/stylistic_sets.png
Binary file not shown.
Binary file removed showcases/v3/swift.png
Binary file not shown.
Binary file removed showcases/v3/unicode.png
Binary file not shown.

0 comments on commit d42e727

Please sign in to comment.