Fira Code v4
@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file.
|
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 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 combinative equal-based arrows #229 #234 #346 #494 #698 #826 #919 #931 #946 #948 #968 #1016 #1018 #1022
|
||||||
@ -10,6 +12,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
- Arbitrary-long numbersign sequences #1014
|
- Arbitrary-long numbersign sequences #1014
|
||||||
- Fixed descender in U+040F `Џ`
|
- Fixed descender in U+040F `Џ`
|
||||||
- Undid #995 and properly fixed U+04CB `Ӌ`, U+04CC`ӌ` #1001 and U+0449 `щ` #1007
|
- 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)
|
#### 3.1 (April 15, 2020)
|
||||||
|
|
||||||
|
100
README.md
@ -12,7 +12,7 @@ Fira Code is a free monospaced font containing ligatures for common programming
|
|||||||
|
|
||||||
### Download & Install
|
### 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:
|
Then:
|
||||||
|
|
||||||
@ -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.
|
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="./extras/samples.png" width="754" height="1068">
|
||||||
|
<img src="./extras/samples2.png" width="754" height="1257">
|
||||||
<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/)) |
|
|
||||||
|
|
||||||
### Editor compatibility list
|
### Editor compatibility list
|
||||||
|
|
||||||
| Works | Doesn’t work |
|
| Works | Doesn’t work |
|
||||||
| ----- | -------------- |
|
|-------|----------------|
|
||||||
| **Abricotine** | **Arduino IDE** |
|
| **Abricotine** | **Arduino IDE** |
|
||||||
| **Android Studio** (2.3+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Adobe Dreamweaver** |
|
| **Android Studio** (2.3+, [instructions](https://github.com/tonsky/FiraCode/wiki/Intellij-products-instructions)) | **Adobe Dreamweaver** |
|
||||||
| **Anjuta** (unless at the EOF) | **Delphi IDE** |
|
| **Anjuta** (unless at the EOF) | **Delphi IDE** |
|
||||||
@ -160,16 +119,36 @@ Swift:
|
|||||||
| **Xi** |
|
| **Xi** |
|
||||||
| Probably work: **Smultron, Vico** | Under question: **Code::Blocks IDE** |
|
| 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
|
### Browser support
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- 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
|
||||||
/* 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
|
```css
|
||||||
@ -181,7 +160,6 @@ code { font-family: 'Fira Code', monospace; }
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
- IE 10+, Edge Legacy: enable with `font-feature-settings: "calt";`
|
- IE 10+, Edge Legacy: enable with `font-feature-settings: "calt";`
|
||||||
- Firefox
|
- Firefox
|
||||||
- Safari
|
- Safari
|
||||||
@ -203,7 +181,7 @@ code { font-family: 'Fira Code', monospace; }
|
|||||||
|
|
||||||
### Alternatives
|
### Alternatives
|
||||||
|
|
||||||
Other free monospaced fonts with ligatures:
|
Free monospaced fonts with ligatures:
|
||||||
|
|
||||||
- [Hasklig](https://github.com/i-tu/Hasklig)
|
- [Hasklig](https://github.com/i-tu/Hasklig)
|
||||||
- [Monoid](http://larsenwork.com/monoid/)
|
- [Monoid](http://larsenwork.com/monoid/)
|
||||||
|
BIN
extras/arrows.png
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
extras/console.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
extras/download.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
extras/ligatures.png
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
extras/math.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
extras/samples.png
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
extras/samples2.png
Normal file
After Width: | Height: | Size: 173 KiB |
BIN
extras/stylistic_sets.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
extras/typographics.png
Normal file
After Width: | Height: | Size: 65 KiB |
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "firacode",
|
"name": "firacode",
|
||||||
"version": "3.1.0",
|
"version": "4.0.0",
|
||||||
"description": "Fira Code: monospaced font with programming ligatures",
|
"description": "Fira Code: monospaced font with programming ligatures",
|
||||||
"main": "distr/fira_code.css",
|
"main": "distr/fira_code.css",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
#! /bin/bash -ex
|
#! /bin/bash -ex
|
||||||
|
|
||||||
sudo easy_install pip
|
sudo easy_install-3.7 pip
|
||||||
pip3 install virtualenv --user
|
pip install virtualenv --user
|
||||||
python3 -m virtualenv venv
|
python3 -m virtualenv venv
|
||||||
source venv/bin/activate
|
source venv/bin/activate
|
||||||
|
|
||||||
# https://github.com/googlefonts/gftools/issues/121
|
# https://github.com/googlefonts/gftools/issues/121
|
||||||
brew install pkg-config
|
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"
|
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
|
||||||
pip3 install pycairo
|
pip install pycairo
|
||||||
pip3 install git+https://github.com/googlefonts/gftools
|
pip install git+https://github.com/googlefonts/gftools
|
||||||
|
|
||||||
pip3 install fontmake
|
pip install fontmake
|
||||||
brew install ttfautohint
|
brew install ttfautohint
|
||||||
brew install woff2
|
brew install woff2
|
||||||
brew tap bramstein/webfonttools
|
brew tap bramstein/webfonttools
|
||||||
brew install sfnt2woff-zopfli
|
brew install sfnt2woff-zopfli
|
||||||
pip3 install fontbakery
|
pip install fontbakery
|
@ -8,6 +8,8 @@ for ttf in $ttfs; do
|
|||||||
sfnt2woff-zopfli $ttf
|
sfnt2woff-zopfli $ttf
|
||||||
done
|
done
|
||||||
|
|
||||||
|
rm distr/ttf/FiraCode-Retina.woff
|
||||||
|
|
||||||
mkdir -p distr/woff
|
mkdir -p distr/woff
|
||||||
woffs=$(ls distr/*/*.woff)
|
woffs=$(ls distr/*/*.woff)
|
||||||
for woff in $woffs; do
|
for woff in $woffs; do
|
||||||
|
@ -8,8 +8,10 @@ for ttf in $ttfs; do
|
|||||||
woff2_compress $ttf
|
woff2_compress $ttf
|
||||||
done
|
done
|
||||||
|
|
||||||
|
rm distr/ttf/FiraCode-Retina.woff2
|
||||||
|
|
||||||
mkdir -p distr/woff2
|
mkdir -p distr/woff2
|
||||||
woff2s=$(ls distr/*/*.woff2)
|
woff2s=$(ls distr/*/*.woff2)
|
||||||
for woff2 in $woff2s; do
|
for woff2 in $woff2s; do
|
||||||
mv $woff2 distr/woff2/$(basename $woff2)
|
mv $woff2 distr/woff2/$(basename $woff2)
|
||||||
done
|
done
|
29
script/package.sh
Executable file
@ -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
|
Before Width: | Height: | Size: 266 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 94 KiB |