N.B. This is a fork of the Source Code Pro repository
Programming languages are limited to relatively few characters. As a result, combined character operators surfaced quite early, such as the widely used arrow (->
), comprised of a hyphen and greater sign. It looks like an arrow if you know the analogy and squint a bit.
Composite glyphs are problematic in languages such as Haskell which utilize these complicated operators (=>
-<
>>=
etc.) extensively. The readability of such complex code improves with pretty printing. Academic articles featuring Haskell code often use lhs2tex to achieve an appealing rendering, but it is of no use when programming.
Some Haskellers have resorted to Unicode symbols (⇒
, ←
etc.), which are valid in the ghc. However they are one-character-wide and therefore eye-strainingly small. Furthermore, when displayed as substitutes to the underlying multi-character representation, as [vim2hs] (https://github.com/dag/vim2hs) does, the characters go out of alignment.
Hasklig solves the problem the way typographers have always solved ill-fitting characters which co-occur often: ligatures. The underlying code stays the same — only the representation changes.
Not only can multi-character glyphs be rendered more vividly, other problematic things in monospaced fonts, such as spacing can be corrected.
Download Hasklig Font Family v1.1
- v1.1
- New ligatures
->>
,:::
,>=>
,<=<
,<=>
,<->
- Switched to newer version of calt code by Nikita Prokopov. It "doesn’t apply ligatures to long sequences of chars, e.g. !!!!, >>>>, etc"
- Fixed
++
and+++
line inconsistency in heavy italic weights
- New ligatures
- v1.0
- Updates to the latest version of SCP
- Hasklig moves to a ligature substitution mechanism borrowed from the excellent Fira Code by Nikita Prokopov
- v0.9: This is a major update so YMMV. Please report any issues.
- Converted to UFO format and updated base fonts to benefit from work done on Source Code Pro:
- Italics!
- Greek & Cyrillic script support
- Better powerline symbols
- Much, much more
- Added tags that enable support for some IntelliJ IDEA Builds
- Converted to UFO format and updated base fonts to benefit from work done on Source Code Pro:
- v0.4: New ligatures:
<*
<*>
<+>
<$>
***
<|>
!!
||
===
==>
, Powerline symbol support - v0.3: New ligatures:
<<<
>>>
<>
and+++
- v0.2: Lengthened
==
and/=
to match other equals signs - v0.1: Ligatures
<-
->
=>
>>
<<
>>=
=<<
..
...
::
-<
>-
-<<
>>-
++
/=
and==
<*
<*>
<+>
<$>
***
<|
|>
<|>
!!
||
===
==>
<<<
>>>
<>
+++
<-
->
=>
>>
<<
>>=
=<<
..
...
::
-<
>-
-<<
>>-
++
/=
==
This list is compiled based on reports on the current state of support for code editors and terminals. This list
- Atom (since v1.1.0)
- Can also be installed as package courtesy of atom-hasklig by adilparvez
- BBEdit 11 (Instructions)
- Chocolat
- Geany
- gEdit
- iTerm2 (Currently only using beta build – 3.1 and onwards)
- Kate
- Konsole
- KWrite
- Leksah (x64 W8 reported not working)
- Light Table (Instructions)
- MacVim (Since release 79. See Issue 32)
- QtCreator (v.3.2.2 on GNU/Linux x64)
- RStudio
- Smultron
- Terminal (OSX)
- TextEdit
- TextMate (from version 2.0-alpha.9549 onwards)
- Vico
- Visual Studio 2015
- Visual Studio Code
- Xcode (requires an additional plugin)
- IntelliJ IDEA (since v2016.2)
-
Emacs
-
gVim (output corrupted. A patch exists, but it has not been incorporated into mainstream gVim.)
-
KDevelop 4
-
Notepad++
-
Sublime Text (Vote for the enhancement here)
-
Xamarin Studio/Monodevelop
To build the binary font files from source, you need to have installed the Adobe Font Development Kit for OpenType (AFDKO). The AFDKO tools are widely used for font development today, and are part of most font editor applications.
Some SVG glyphs are inserted into the fonts using Python FontTools.
This repository only includes so-called master weights of the fonts (effectively extralight and black).
The shapes of the weights in between these extremities are calculated by makeInstancesUFO
supplied with .designspace
files.
For convenience, the shell script buildInstances is provided, which executes makeInstancesUFO
, calculating all the italic and regular font weight shapes.
$ ./buildInstances.sh
The key to building OTF or TTF fonts is makeotf
, which is part of the AFDKO toolset.
Information and usage instructions can be found by executing makeotf -h
.
In this repository, all necessary files are in place for building the OTF and TTF fonts. For example, build a binary OTF font for the Regular style like this:
$ cd Roman/Regular/
$ makeotf -r
For convenience, a shell script named build is provided in the root directory. It builds all OTFs and TTFs, and can be executed by typing:
$ ./build.sh
or this on Windows:
> build.cmd
Original idea, design and implementation of code ligatures by Ian Tuomi 2014-2015. This typeface extends Source Code Pro with ligatures.
What's in a name? The reason for the name change is to comply with the SIL Open Font License (OFL), in partcular the Reserved Font Name mechanism
Some fonts have parts of their name "reserved" per the Reserved Font Name mechanism:
No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
- The main goals seem to be to:
Avoid collisions
,Protect authors
,Minimize support
, andEncourage derivatives
See the Reserved Font Name section for additional information
- Pick your font family and then select from the
'complete'
directory.- If you are on Windows pick a font with the
'Windows Compatible'
suffix.- This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations
- If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the
'Mono'
suffix.- This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced
- If you are on Windows pick a font with the
By the Nerd Font policy, the variant with the 'Mono'
suffix is not supposed to have any ligatures.
Use the non-Mono variants to have ligatures.
Once you narrow down your font choice of family (Droid Sans
, Inconsolata
, etc) and style (bold
, italic
, etc) you have 2 main choices:
- download an already patched font from the
complete
folder- This is most likely the one you want. It includes all of the glyphs from all of the glyph sets. Only caution here is that some fonts have glyphs in the same code point so to include everything some had to be moved to alternate code points.
- patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available)
- This is the option you want if the font you use is not already included or you want maximum control of what's included
- This contains a list of all permutations of the various glyphs. E.g. You want the font with only Octicons or you want the font with just Font Awesome and Devicons. The goal is to provide every combination possible in this folder.
For more information see: The FAQ
The combinations and total number of combinations are provided here for reference if you want to create your own variation of a patched Nerd Font.
Combinations are no longer included by default because of the large inflation in size it caused the Repository and the amount of time it takes to rebuild all of the combinations. This issue would exponentially get worse as the numbers of Fonts and Glyph Sets provided increase.