Add ligatures to any coding font!
This repo contains 2 things:
- Programming fonts with ligatures added (in
output-fonts/
), including:
- Anonymous Pro
- CamingoCode
- Cousine
- DejaVu Sans Mono
- Droid Sans Mono
- edlo
- Hack
- Inconsolata & Inconsolata-g
- IBM Plex Mono: Regular, Semibold
- Meslo (LGL, LGLDZ, LGM, LGMDZ, LGS, LGSDZ)
- Oxygen Mono
- Roboto Mono
- SF Mono: Regular, Semibold
- Ubuntu Mono
- A fontforge python script (ligaturize.py) that adds the ligatures from Fira Code to a font without ligatures
Here's a couple examples of the fonts generated: SF Mono with ligatures (note the !=
and ->
):
Credit
This awesome script was written by IlyaSkriblovsky for adding ligatures to Deja Vu Sans Mono (dv-code-font). I made a few changes to generalize the script so that it works for any font, so that I could add ligatures to my favorite fonts.
Using the Fonts: See the FiraCode README for a list of supported editors.
Script: This script requires FontForge python bindings. For Debian/Ubuntu they are available in python-fontforge
package. For macOS,
they are available via brew (brew install fontforge
).
- Move/copy the font you want to ligaturize into
input-fonts/
- Run the script:
$ fontforge -lang=py ligaturize.py
- You'll be prompted for the name of the font, and the name for the generated font. Example:
❯ fontforge -lang=py ligaturize.py
...
Enter the source font filename (including extension): RobotoMono-Regular.ttf
Enter a name for your ligaturized font -- or press ENTER to use the same name: <PRESS ENTER>
...
Generated ligaturized font Roboto Mono L in ligaturized-fonts/RobotoMono.ttf
❯ fontforge -lang=py ligaturize.py
...
Enter the source font filename (including extension): RobotoMono-Regular.ttf
Enter a name for your ligaturized font -- or press ENTER to use the same name: RobotoMonoL
...
Generated ligaturized font Roboto Mono L in ligaturized-fonts/RobotoMonoL.ttf
If you don't provide a name for the new font, it will have the same name as the input font.
For more awesome programming fonts with ligatures, check out: